Добавьте новую кнопку с именем logout, которая печатает "Goodbye" при нажатии

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys 
from PyQt4 import QtGui

global username
username = " "

class Home(QtGui.QWidget):

def __init__(self):
    super(Home, self).__init__()

    self.initUI()

def initUI(self):
    font   = QtGui.QFont("Arial",10,QtGui.QFont.Bold,False)    

    username = QtGui.QLabel('Username',self)
    username.move(10,40)
    username.setFont(font);

    usernameEdit = QtGui.QLineEdit(self)
    usernameEdit.move(100,35)
    usernameEdit.textChanged[str].connect(self.onChangedusername)
    usernameEdit.setFocus()

    btn = QtGui.QPushButton('Login', self)
    btn.move(10, 80)
    btn.setFixedWidth(130)
    btn.setFixedHeight(50)     
    btn.setStyleSheet("background-color: #FF0000") #red color
    btn.clicked.connect(self.begin)  
    btn.setFont(font)

    self.setGeometry(5, 30, 600, 300)
    self.setWindowTitle('CSCI237')   #Update window title to CSCI237
    self.show()

def onChangedusername(self, text):
    global username
    username = str(text)

def begin(self):
    print username

def main():
app = QtGui.QApplication(sys.argv)
ex = Home()
sys.exit(app.exec_())



if __name__ == '__main__':
main()
  1. Обновите заголовок окна до CSCI237 - Регистрация курса
  2. Измените цвет кнопки входа. Подсказка: используйте шестнадцатеричные цветовые коды
  3. Обновите код, чтобы он выводил "Hello –username-" при нажатии кнопки "Вход".
  4. Добавьте новую кнопку с именем Logout, которая печатает "Goodbye" при нажатии.

1 ответ

Вот ваш код с небольшим рефакторингом:

import sys

from PyQt4.Qt import *  # noqa


class Home(QWidget):

    def __init__(self):
        super(Home, self).__init__()
        self.init_ui()

    def init_ui(self):
        font = QFont("Arial", 10, QFont.Bold, False)

        # Username info
        username_label = QLabel('Username', self)
        username_label.setFont(font)
        self.username_edit = QLineEdit(self)
        self.username_edit.setFocus()

        # Login/Logout buttons
        login_button = QPushButton('Login', self)
        login_button.setStyleSheet("background-color: #FF0000")
        login_button.clicked.connect(self.on_login_button)
        login_button.setFont(font)
        logout_button = QPushButton('Logout', self)
        logout_button.setStyleSheet("background-color: #00FF00")
        logout_button.clicked.connect(self.on_logout_button)
        logout_button.setFont(font)

        # Layout arrangements
        hbox_layout1 = QHBoxLayout()
        hbox_layout1.addWidget(username_label)
        hbox_layout1.addWidget(self.username_edit)
        hbox_layout2 = QHBoxLayout()
        hbox_layout2.addWidget(login_button)
        hbox_layout2.addWidget(logout_button)
        vbox_layout = QVBoxLayout()
        vbox_layout.addLayout(hbox_layout1)
        vbox_layout.addLayout(hbox_layout2)
        self.setLayout(vbox_layout)

        self.setWindowTitle('CSCI237')
        self.show()

    def on_login_button(self):
        username = str(self.username_edit.text())
        if username.strip() == "":
            print("Username is empty!")
        else:
            print("Hello {}".format(username))

    def on_logout_button(self):
        print("GoodBye {}!".format(self.username_edit.text()))
        self.close()


def main():
    app = QApplication(sys.argv)
    ex = Home()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

Пара советов:

  • Старайтесь избегать использования глобальных переменных в максимально возможной степени
  • Использование макетов pyqt вместо жестко запрограммированных интервалов / размеров - хороший способ
Другие вопросы по тегам