gui基本布局
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.nameBox.setPlaceholderText('请输入你的名字') 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_())