Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
PyQt5 ²¼¾ÖdzÎö
 
×÷Õߣº Èê½ñÄַܳñ
  3867  次浏览      28
 2020-1-10
 
±à¼­ÍƼö:
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

 
   
3867 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ