반응형
Horizontal Box Layout
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(350, 150, 400, 400) # 창의 위치와 크기
self.setWindowTitle("Horizontal Box Layout")
self.UI()
def UI(self):
hbox = QHBoxLayout() #horizontal box layout
button1 = QPushButton("Button1",self)
button2 = QPushButton("Button2")
button3 = QPushButton("Button3")
# hbox.addStretch() , 고정된 크기로 지정
hbox.addWidget(button1)
hbox.addWidget(button2)
hbox.addWidget(button3)
# hbox.addStretch()
self.setLayout(hbox)
self.show()
def main():
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
if __name__ =='__main__':
main()
Vertical Box Layout
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(350, 150, 400, 400) # 창의 위치와 크기
self.setWindowTitle("Vertical Box Layout")
self.UI()
def UI(self):
vbox = QVBoxLayout() #Vertical box layout
button1 = QPushButton("Save")
button2 = QPushButton("Exit")
button3 = QPushButton("Hello")
vbox.addStretch() # 고정된 크기로 지정
vbox.addWidget(button1)
vbox.addWidget(button2)
vbox.addWidget(button3)
vbox.addStretch()
self.setLayout(vbox)
self.show()
def main():
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
if __name__ =='__main__':
main()
Vertical and Horizontal box layout
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(350, 150, 400, 400) # 창의 위치와 크기
self.setWindowTitle("Vertical and horizontal Box Layout")
self.UI()
def UI(self):
mainLayout = QVBoxLayout()
topLayout = QHBoxLayout()
bottomLayout = QHBoxLayout()
mainLayout.addLayout(topLayout)
mainLayout.addLayout(bottomLayout)
cbox = QCheckBox()
rbtn = QRadioButton()
combo = QComboBox()
btn1 = QPushButton()
btn2 = QPushButton()
topLayout.setContentsMargins(150,10,20,20) # left, top, right, bottom
topLayout.addWidget(cbox)
topLayout.addWidget(rbtn)
topLayout.addWidget(combo)
bottomLayout.setContentsMargins(150,10,150,10)
bottomLayout.addWidget(btn1)
bottomLayout.addWidget(btn2)
self.setLayout(mainLayout)
self.show()
def main():
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
if __name__ =='__main__':
main()
form layout
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(350, 150, 400, 400) # 창의 위치와 크기
self.setWindowTitle("Form Layout")
self.UI()
def UI(self):
formLayout = QFormLayout()
name_txt = QLabel("Name : ")
name_input = QLineEdit()
pass_txt = QLabel("Password : ")
pass_input = QLineEdit()
hbox = QHBoxLayout()
hbox.addStretch()
hbox.addWidget(QPushButton("Enter"))
hbox.addWidget(QPushButton("Exit"))
hbox1 = QHBoxLayout()
hbox1.addWidget(QLineEdit())
hbox1.addWidget(QLineEdit())
formLayout.addRow(name_txt,hbox1)
formLayout.addRow(pass_txt,pass_input)
formLayout.addRow(QLabel("Country : "),QComboBox())
formLayout.addRow(hbox)
self.setLayout(formLayout)
self.show()
def main():
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
if __name__ =='__main__':
main()
Silider Widget
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
class Window(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(350, 150, 600, 500) # 창의 위치와 크기
self.setWindowTitle("Slider Widget")
self.UI()
def UI(self):
vbox = QVBoxLayout()
self.slider = QSlider(Qt.Horizontal)
self.slider.setMinimum(0)
self.slider.setMaximum(100)
self.slider.setTickPosition(QSlider.TicksAbove)
self.slider.setTickInterval(10)
self.slider.valueChanged.connect(self.getValue)
self.text1 = QLabel("0")
self.text1.setAlignment(Qt.AlignCenter)
self.text2 = QLabel("Hello Python")
vbox.addStretch()
vbox.addWidget(self.text1)
vbox.addWidget(self.text2)
vbox.addWidget(self.slider)
self.setLayout(vbox)
self.show()
def getValue(self):
val = self.slider.value()
print(val)
self.text1.setText(str(val))
fontSize = self.slider.value()
font = QFont("Times",fontSize)
self.text2.setFont(font)
def main():
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
if __name__ =='__main__':
main()
Table Widget
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(350, 150, 400, 400) # 창의 위치와 크기
self.setWindowTitle("table widget")
self.UI()
def UI(self):
vbox = QVBoxLayout()
self.table = QTableWidget()
btn = QPushButton("Get")
self.table.setRowCount(5)
self.table.setColumnCount(3)
self.table.setHorizontalHeaderItem(0,QTableWidgetItem("Name"))
self.table.setHorizontalHeaderItem(1,QTableWidgetItem("Surname"))
self.table.setHorizontalHeaderItem(2,QTableWidgetItem("Address"))
# self.table.horizontalHeader().hide()
# self.table.verticalHeader().hide()
self.table.setItem(0,0,QTableWidgetItem("First Item"))
self.table.setItem(0,1,QTableWidgetItem("2th Item"))
self.table.setItem(1,2,QTableWidgetItem("3th Item"))
self.table.setItem(4,2,QTableWidgetItem("4th Item"))
self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)
self.table.doubleClicked.connect(self.doubleClicked)
btn.clicked.connect(self.getValue)
vbox.addWidget(self.table)
vbox.addWidget(btn)
self.setLayout(vbox)
self.show()
def getValue(self):
for item in self.table.selectedItems():
print(item.text(),item.row(),item.column())
def doubleClicked(self):
for item in self.table.selectedItems():
print(item.text(),item.row(),item.column())
def main():
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
if __name__ =='__main__':
main()
Tab Widget
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.setGeometry(350, 150, 600, 600) # 창의 위치와 크기
self.setWindowTitle("Tab Widget")
self.UI()
def UI(self):
mainLayout = QVBoxLayout()
self.tabs = QTabWidget()
self.tab1=QWidget()
self.tab2=QWidget()
self.tab3=QWidget()
self.tabs.addTab(self.tab1,"First Tab")
self.tabs.addTab(self.tab2,"Second Tab")
self.tabs.addTab(self.tab3,"Last Tab")
#############Widget###################
vbox = QVBoxLayout()
hbox = QHBoxLayout()
self.text = QLabel("Hello Python")
self.btn1 = QPushButton("First Tab")
self.btn1.clicked.connect(self.btnFunc)
self.btn2 = QPushButton("Second Tab")
vbox.addWidget(self.text)
vbox.addWidget(self.btn1)
hbox.addWidget(self.btn2)
self.tab1.setLayout(vbox)
self.tab2.setLayout(hbox)
mainLayout.addWidget(self.tabs)
self.setLayout(mainLayout)
self.show()
def btnFunc(self):
self.text.setText("Button is active")
def main():
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
if __name__ =='__main__':
main()
Menu Widget
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.setGeometry(350, 150, 600, 600) # 창의 위치와 크기
self.setWindowTitle("Menu Widget")
self.UI()
def UI(self):
####################### Main Menu #######################
menubar = self.menuBar()
file = menubar.addMenu("File")
edit = menubar.addMenu("Edit")
code = menubar.addMenu("Code")
helpMenu = menubar.addMenu("Help")
####################### Sub Menu Items ####################
new = QAction("New Project", self)
new.setShortcut("Ctrl+O")
file.addAction(new)
exit = QAction("Exit",self)
exit.setIcon((QIcon("icons/exit.png")))
exit.triggered.connect(self.exitFunc)
file.addAction(exit)
####################### ToolBar ###########################
tb = self.addToolBar("My Toolbar")
tb.setToolButtonStyle(Qt.ToolButtonTextUnderIcon)
newTb = QAction(QIcon('add.png'),"New",self)
tb.addAction(newTb)
openTb = QAction(QIcon('cart.png'),"Open",self)
tb.addAction(openTb)
saveTb = QAction(QIcon('sell.png'),"Save",self)
tb.addAction(saveTb)
exitTb = QAction(QIcon('user.png'),"Exit",self)
exitTb.triggered.connect(self.exitFunc)
tb.addAction(exitTb)
tb.actionTriggered.connect(self.btnFunc)
self.combo = QComboBox()
self.combo.addItems(["Spiderman","Superman","Batman"])
tb.addWidget(self.combo)
self.show()
def exitFunc(self):
mbox = QMessageBox.information(self, "Warning","Are you sure to exit?",QMessageBox.Yes|QMessageBox.No,QMessageBox.No)
if mbox == QMessageBox.Yes:
sys.exit()
def btnFunc(self,btn):
if btn.text() == "New":
print("You clicked new button")
elif btn.text() == "Open":
print("You clicked open button")
else:
print("You clicked save button")
def main():
App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
if __name__ =='__main__':
main()
반응형
'study > python' 카테고리의 다른 글
클래스 상속과 고급 객체 지향 기능 (0) | 2020.12.02 |
---|---|
객체 지향 프로그래밍과 절차적 프로그래밍 (0) | 2020.12.02 |
PyQt5 (0) | 2020.11.24 |
Matplotlib - 그래프 그리기2 (0) | 2020.11.16 |
Matplotlib - 그래프 그리기 (0) | 2020.11.09 |