±à¼ÍƼö: |
PyQt5ÊÇÒ»¿î¿ª·¢Ð§Âʼ«¸ßµÄUI¿ò¼Ü¡£ÕâÆªÎÄÕ´ÓÁ㿪ʼ£¬½ÌÄã´î½¨Ò»¸öÊôÓÚ×Ô¼ºµÄ×ÀÃæÓ¦Óã¬Ï£Íû¶Ô´ó¼ÒÓаïÖú¡£
±¾ÎÄÀ´×ÔÓÚÖªºõ£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼£¬ÍƼö |
|
´´½¨µÚÒ»¸ö´°¿Ú
Ò»°ãÀ´Ëµ£¬×ÀÃæÓ¦Óö¼ÒÔ´°¿Ú(window)ÐÎʽ³ÊÏÖ¡£Òò´Ë£¬Òª´î½¨×ÀÃæÓ¦Óã¬Ê×ÏÈÒª´´½¨´°¿Ú¡£
ÏÂÃæÕâ¶Î´úÂë´´½¨ÁËÒ»¸ö¿ÕµÄ´°¿Ú¡£
from PyQt5.QtWidgets
import *
import sys
class Window(QMainWindow):
def __init__(self):
super().__init__()
# set the title of main window
self.setWindowTitle ('My first window - www.luochang.ink')
# set the size of window
self.Width = 500
self.height = int(0.618 * self.Width)
self.resize(self.Width, self.height)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Window()
ex.show()
sys.exit(app.exec_()) |

Õâ¶Î´úÂë½ö½öÉèÖÃÁË´°¿ÚµÄ±êÌâºÍ´óС¡£ÏÂÒ»²½£¬ÎÒÃÇÒªÍùÕâ¸ö¿ÕµÄ´°¿ÚÀïÌí¼Ó²¿¼þ(widget). ΪÁ˹淶ÐÔ£¬ÎÒÃÇÔÚWindowÀàÀïн¨Ò»¸öº¯ÊýinitUI, È»ºóÔÚinitUIÀïΪ´°¿ÚÌí¼Ó²¿¼þ¡£
Ϊ´°¿ÚÌí¼Ó²¿¼þ
ÏÂÃæÕâ¶Î´úÂëΪ´°¿ÚÌí¼ÓÁËÒ»¸ö°´Å¥(QPushButton).
from PyQt5.QtWidgets
import *
import sys
class Window(QMainWindow):
def __init__(self):
super().__init__()
# set the title of main window
self.setWindowTitle ('My first window - www.luochang.ink')
# set the size of window
self.Width = 500
self.height = int(0.618 * self.Width)
self.resize(self.Width, self.height)
self.initUI()
def initUI(self):
# create a new button
self.btn = QPushButton ('first Button', self)
self.btn.resize(300,90)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Window()
ex.show()
sys.exit(app.exec_()) |

first widget
µ«ÊÇÎÒÃÇ·¢ÏÖ£¬Èç¹ûûÓÐÌí¼ÓÈκβ¼¾Ö£¬ÎÒÃÇ´´½¨µÄ°´Å¥(self.btn), ÓÀÔ¶±»·ÅÖÃÔÚ´°¿ÚµÄ×óÉϽǡ£¼´Ê¹ÎÒÃÇ¿ÉÒÔÓÃmoveº¯ÊýÒÆ¶¯Ëü£¬ÅŰæ×÷ÓÃÒ²·Ç³£ÓÐÏÞ¡£Òò´ËÎÒÃÇÐèҪΪ´°¿ÚÌí¼Ó²¼¾Ö¡£
Ϊ´°¿ÚÌí¼Ó²¼¾Ö
PyQt5µÄ²¼¾Ö(layout)Óкܶ࣬±È½Ï³£¼ûµÄÓÐQBoxLayout, QGridLayout, QFormLayout. µ«ÎÒҪ˵£¬ºóÁ½ÖÖ²¼¾Ö¶¼ÓÐÆä¾ÖÏÞÐÔ£¬Ò»°ãÖ»ÊÊÓÃÓÚÌØÊⳡ¾°£¬µ«QBoxLayoutÈ´ÊÇÒ»Õдò±éÌìÏÂÎÞµÐÊÖ¡£´ó²¿·ÖÇé¿öÏ£¬QBoxLayout¶¼¿ÉÒÔÌæ´úÆäËûÁ½ÖÖ²¼¾Ö·½Ê½¡£
QBoxLayoutµÄ²¼¾Ö˼ÏëÊÇ£ºÍ¨¹ý¶¨Ò岿¼þÖ®¼äµÄÉÏÏÂ×óÓÒ¹ØÏµÀ´¶¨Òå¿Õ¼ä½á¹¹¡£Òò´ËËüÓÐÁ½¸öº¯ÊýQHBoxLayoutºÍQVBoxLayout, º¯ÊýÃûÀïµÄHºÍV·Ö±ð¶ÔÓ¦Ó¢Îĵ¥´ÊhorizontalºÍvertical, ´ú±íˮƽºÍÊúÖ±¡£ËùÒÔ£¬QHBoxLayout´ú±íºáÏòÅŰ棬QVBoxLayout±íʾ×ÝÏòÅŰ档
ÏÂÃæÕâ¶Î´úÂëÊÇÒ»¸öQHBoxLayoutµÄÀý×Ó¡£ÎªÁ˼ò½à£¬Öظ´µÄ´úÂë¾Í²»·ÅÁË£¬ÕâÀïÖ»ÌùinitUIµÄ²¿·Ö¡£
def initUI(self):
# create new buttons
self.btn_left = QPushButton ('left', self)
self.btn_right = QPushButton ('right', self)
# setting up a layout
main_layout = QHBoxLayout()
main_layout.addWidget (self.btn_left)
main_layout.addWidget (self.btn_right)
# create the central widget
main_widget = QWidget()
main_widget.setLayout(main_layout)
self.setCentralWidget(main_widget) |

first layout
¿ÉÒÔ¿´³ö£¬´´½¨Ò»¸ö²¼¾ÖÖ»ÐèÒªÈý²½¡£
´´½¨²¿¼þ(widget).
´´½¨²¼¾Ö(layout), ²¢½«²¿¼þÒÀ´ÎÌí¼Óµ½²¼¾ÖÖС£
´´½¨ÖÐÐIJ¿¼þ(central widget), ²¢ÎªÖÐÐIJ¿¼þÌí¼Ó²¼¾Ö¡£
ÒªÀí½âÕâÈý²½£¬Ê×ÏÈÒªÀí½âʲôÊÇÖÐÐIJ¿¼þ(central widget)¡£ÖÐÐIJ¿¼þºÍ°´Å¥²¿¼þ(QPushButton)ËäÈ»¶¼±»³Æ×÷²¿¼þ(widget), µ«ËüÁ©ÊÇÍêÈ«²»Í¬µÄ¡£Óë°´Å¥²¿¼þÏà±È£¬ÖÐÐIJ¿¼þûÓй̶¨µÄ¹¦ÄܺÍÐÎ̬£¬Ëü¾ÍÏñ»²¼£¬±¾ÉíÊǿհ׵ģ¬Òò´ËÄãÎÞ·¨Ö±½ÓÔÚ´°¿ÚÖп´µ½Ëü¡£ËüµÄ×÷ÓÃÔÚÓÚͨ¹ýµ÷ÕûËüµÄ²¼¾ÖÊôÐÔ(setLayout)À´¶ÔÆäËû²¿¼þÅŰ档
ÖÐÐIJ¿¼þ£¬²¼¾ÖºÍ²¿¼þÖ®¼äµÄÂß¼¹ØÏµÈçÏ¡£
main_widget£¨ÖÐÐIJ¿¼þ£©
¡ý
¡ý setLayout
¡ý
main_layout£¨²¼¾Ö£©
¡ý
¡ý addWidget
¡ý
btn_left & btn_right £¨²¿¼þ£© |
²¼¾Ö½ø½×Ö®²¿¼þËõ·Å
²¼¾Ö¶¨ÒåÁ˲¿¼þÖ®¼äµÄλÖùØÏµ£¬µ«ÓÐÁ˲¼¾Ö»¹²»¹»£¬ÎÒÃÇ»¹ÐèÒª¶¨Ò岿¼þÖ®¼äµÄ±ÈÀý¹ØÏµ¡£ÕâÐèÒªÓõ½setStretchº¯Êý¡£
ÏÂÃæÕâ¶Î´úÂëµ÷ÕûÁ½¸ö°´Å¥Ö®¼äµÄ±ÈÀýΪ1:3¡£
def initUI(self):
# create a new button
self.btn_left = QPushButton ('left', self)
self.btn_right = QPushButton ('right', self)
# setting up a layout
main_layout = QHBoxLayout()
main_layout.addWidget(self.btn_left)
main_layout.addWidget(self.btn_right)
# set stretch for main layout
main_layout.setStretch(0, 1)
main_layout.setStretch(1, 3)
# create the central widget
main_widget = QWidget()
main_widget.setLayout(main_layout)
self.setCentralWidget(main_widget) |

layout stretch
ÉÏÊö´úÂëÖ»ÔÚÔ»ù´¡ÉϼÓÁËÁ½ÐС£
main_layout.setStretch(0, 1)±íʾ0ºÅ²¿¼þµÄÀÉìÉèÖÃΪ1
main_layout.setStretch(1, 3)`±íʾ1ºÅ²¿¼þµÄÀÉìÉèÖÃΪ3
ÓÉ´Ë£¬Á½¸ö²¿¼þÖ®¼äµÄ±ÈÀý¹ØÏµ±»¶¨ÒåΪ1£º3¡£
²¼¾Ö½ø½×Ö®²¿¼þµü´ú
ÔÚPyQt5ÀÀàËÆÖÐÐIJ¿¼þÕâÑùµÄÓÃÓÚ²¼¾ÖµÄ²¿¼þ¿ÉÒÔ¶à´Îµü´ú¡£ÕâÒâζ×ÅÄã¿ÉÒÔÍù²¼¾Ö²¿¼þÀïµÄ²¼¾Ö²¿¼þÀï¼Ó²¼¾Ö²¿¼þ¡£
ÏÂÃæÕâ¶Î´úÂë²ûÃ÷ÁËÕâÖÖµü´ú½á¹¹¡£
# ´´½¨Ëï×Ó²¿¼þ
sub_sub_Layout = QHBoxLayout()
sub_sub_widget = QWidget()
sub_sub_widget.setLayout (sub_sub_Layout)
# ´´½¨¶ù×Ó²¿¼þ
sub_Layout = QHBoxLayout()
sub_Layout.addWidget(sub_sub_widget) # ¶ù×ÓÈÏËï×Ó
sub_widget = QWidget()
sub_widget.setLayout(sub_Layout)
# ´´½¨¸¸Çײ¿¼þ
main_layout = QHBoxLayout()
main_layout.addWidget(sub_widget) # ¸¸Ç×È϶ù×Ó
main_widget = QWidget()
main_widget.setLayout(main_layout)
self.setCentralWidget(main_widget) |
ÖÆ×÷Ò»¸ö²¼¾ÖÁé»îµÄUI½çÃæ
ѧ»áÁËÒÔÉÏÕâЩ·½·¨£¬ÔÙÅäºÏÒ»Ð©Ææ¼¼ÒùÇÉ£¬±ÈÈç¼Ó¿Õ°×µÄռλ²¿¼þaddStretch(int), Äã»ù±¾ÉϾͿÉÒÔËæÐÄËùÓûµØ¿ØÖƲ¼¾ÖÁË¡£
ÏÂÃæÕâ¶Î´úÂëÖÆ×÷ÁËÒ»¸öÓÐÒâ˼µÄ×ÀÃæÓ¦Ó㺿ä¿ä»úÆ÷ÈË¡£
from PyQt5.QtWidgets
import *
from PyQt5.QtGui import *
import sys, random
class Window(QMainWindow):
def __init__(self):
super().__init__()
# set the title of main window
self.setWindowTitle ('PyQt5 desktop application
- www.luochang.ink')
# set the size of window
self.Width = 700
self.height = int(0.618 * self.Width)
self.resize(self.Width, self.height)
# create all widgets
self.Label1 = QLabel ("¿ä¿ä»úÆ÷ÈË - Praise me
please")
self.Label1.setFont(QFont('bold', 14))
self.Label2 = QLabel ("created by luochang")
self.Label2.setFont(QFont('bold', 7))
self.nameBox = QLineEdit('Äã')
self.genderBox = QComboBox()
self.genderBox.addItem('all')
self.genderBox.addItem('female')
self.genderBox.addItem('male')
self.advantageBox = QComboBox()
self.advantageBox.addItem('all')
self.advantageBox.addItem('character')
self.advantageBox.addItem('intelligence')
self.advantageBox.addItem('appearance')
self.textBox = QTextEdit(self)
self.btn = QPushButton('Praise me', self)
self.btn.clicked.connect(self.praise_me)
self.initUI()
def initUI(self):
# setting up layout of main window
upper_widget = self.create_upper_widget()
lower_widget = self.create_lower_widget()
main_layout = QVBoxLayout()
main_layout.addWidget(upper_widget)
main_layout.addWidget(lower_widget)
main_layout.setStretch(0, 1)
main_layout.setStretch(1, 4)
main_widget = QWidget()
main_widget.setLayout(main_layout)
self.setCentralWidget(main_widget)
def create_upper_widget(self):
upper_layout = QVBoxLayout()
upper_layout.addWidget(self.Label1)
upper_layout.addStretch(5)
upper_layout.addWidget(self.Label2)
upper_layout.addStretch(5)
upper_widget = QWidget()
upper_widget.setLayout(upper_layout)
return upper_widget
def create_lower_widget(self):
lower_left_widget = QGroupBox ("Selections")
lower_left_layout = QVBoxLayout()
lower_left_layout.addWidget (QLabel("Your
name:"))
lower_left_layout.addWidget (self.nameBox)
lower_left_layout.addWidget (QLabel("Your
gender:"))
lower_left_layout.addWidget (self.genderBox)
lower_left_layout.addWidget (QLabel("Your
advantage:"))
lower_left_layout.addWidget (self.advantageBox)
lower_left_layout.addStretch(5)
lower_left_layout.addWidget(self.btn)
lower_left_widget.setLayout (lower_left_layout)
lower_right_layout = QVBoxLayout()
lower_right_layout.addWidget (self.textBox)
lower_right_widget = QWidget()
lower_right_widget.setLayout (lower_right_layout)
lower_layout = QHBoxLayout()
lower_layout.addWidget(lower_left_widget)
lower_layout.addWidget(lower_right_widget)
lower_layout.setStretch(0,1)
lower_layout.setStretch(1,2)
lower_widget = QWidget()
lower_widget.setLayout(lower_layout)
return lower_widget
def praise_me(self):
name = str(self.nameBox.text())
gender = str (self.genderBox.currentText())
advantage = str (self.advantageBox.currentText())
sentence = [['Ôõô¿ÉÒÔÕâôºÃ£¡', 'ÊÇÒªÃÈËÀÎÒÂð£¿', '¾ÙÖ¹¶Ë·½£¬ÎÂÎĶûÑÅ',
'ÖªÊé´ïÀí', 'ÑÔ̸¿ÉÇ×', 'ÊÇÎÒµÄСÌìʹ',\
'»í´ï¿ªÀÊ', 'ÎÂÈáÌåÌùÉÆ½âÈËÒâ', '·Ç³£ÉðÊ¿', 'ΪÈË´ó·½£¬ÀÖÓÚÖúÈË', 'ÖØÇéÖØÒå',
'ÊǸöÖµµÃÐÅÈεÄÄÐÈË'],
['²©ÎÅÇ¿¼Ç', '²Å¸ß°Ë¶·', '±¥¶ÁÊ«Êé', 'ÐãÍâ»ÛÖÐ', 'ÕæÊǸöС»úÁé¹í',
'Ã÷Ã÷¿ÉÒÔ¿¿Á³³Ô·¹£¬·ÇÒª¿¿²Å»ª',\
'Ʒѧ¼æÓÅ', 'ѧ¸»Îå³µ', 'ÉÏÖªÌìÎÄÏÂÖªµØÀí','ÊÇÖî¸ðÁÁתÊÀ', 'ÓÐÑÕÓÖÓвÅ',
'¿ÉÒÔ˵ÊÇ ¡°ÉϵÃÌüÌã¬Ïµóø·¿¡±'],
['ºÃÃçÌõŶ£¡ÎÒºÃËá', 'ÊÇÎÒµÄÃÎÖÐÅ®Éñ', 'ÃÀÀö´ó·½', '¸ÕÒ»³öÀ´ÎÒ»¹ÒÔΪÊÇÁõÒà·Æ',
'ºÃ¿É°®£¬ÏñÑóÍÞÍÞ', 'µÄ¿É°®ÖµµÃÎÒÓÃÒ»ÉúÀ´ÊØ»¤',\
'ºÃ˧£¡£¡ÎÒÏë¸øÄãÉúºï×Ó', '¿É̫˧ÁË£¬ÎÒÄܰ®Ò»±²×Ó', 'Ë§ÆøÓÖÃÔÈË', 'ÊÇ¿á¿áÄк¢£¡',
'ÓÐ×Ŵ󺣰ãÉîåäµÄÑÛ¾¦', 'ÊǸö˧С»ï']]
if gender == 'all':
column_start = 0
column_stop = len(sentence[0])
elif gender == 'female':
column_start = 0
column_stop = int(len(sentence[0])/2)
elif gender == 'male':
column_start = int(len(sentence[0])/2)
column_stop = len(sentence[0])
else:
print('genderBox error')
if advantage == 'all':
row = random.randrange(0, len (sentence))
elif advantage == 'character':
row = 0
elif advantage == 'intelligence':
row = 1
elif advantage == 'appearance':
row = 2
else:
print('advantageBox error')
praise_sentence = sentence[row] [random.randrange (column_start,
column_stop)]
self.textBox.setText("{}{}". format(name,
praise_sentence))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Window()
ex.show()
sys.exit(app.exec_()) |
ÕâÊÇÎÒ×öµÄ¿ä¿ä»úÆ÷ÈË£¬¸øËüÈ¡µÄÓ¢ÎÄÃû½Ðpraise me please. ÊäÈëÐÕÃû¡¢ÐÔ±ðºÍÄãÒªËü¿äÄãɶ£¬È»ºóµãpraise me, Ëû¾Í»á¿ªÊ¼Ëæ»ú¿äÄã¡£¹þ¹þ¹þÎÒ¾õµÃºÃÖÇÕϰ¡£¬µ«ÎÒϲ»¶£¡

praise me please
|