Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyQt5 |我无法理解我的函数是否有效_Python_Pyqt5 - Fatal编程技术网

Python PyQt5 |我无法理解我的函数是否有效

Python PyQt5 |我无法理解我的函数是否有效,python,pyqt5,Python,Pyqt5,有一个窗口,当您单击toNextPage和TopPreviousPage按钮时,其中的某些内容应该更改 我试图通过每个页面的函数来实现这一点。也就是说,窗口、2个按钮和标题必须保持在原位。在按钮和标题之间有一个位置,显示函数中描述的内容。该函数在代码中描述为page_1,但当您单击调用该函数的toNextPage按钮时,窗口中的任何内容都不会更改 from PyQt5 import QtCore, QtGui, QtWidgets class Ui_FirstTheme(object):

有一个窗口,当您单击toNextPage和TopPreviousPage按钮时,其中的某些内容应该更改

我试图通过每个页面的函数来实现这一点。也就是说,窗口、2个按钮和标题必须保持在原位。在按钮和标题之间有一个位置,显示函数中描述的内容。该函数在代码中描述为page_1,但当您单击调用该函数的toNextPage按钮时,窗口中的任何内容都不会更改

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_FirstTheme(object):
    def setupUi(self, FirstTheme):
        FirstTheme.setObjectName("FirstTheme")
        FirstTheme.resize(600, 700)
        FirstTheme.setMinimumSize(QtCore.QSize(600, 700))
        FirstTheme.setMaximumSize(QtCore.QSize(600, 700))
        icon = QtGui.QIcon.fromTheme("icon.ico")
        FirstTheme.setWindowIcon(icon)
        FirstTheme.setStyleSheet("background-color: #070506;\n"
"color: grey;\n"
"")
        self.centralwidget = QtWidgets.QWidget(FirstTheme)
        self.centralwidget.setObjectName("centralwidget")
        FirstTheme.setCentralWidget(self.centralwidget)
        QtCore.QMetaObject.connectSlotsByName(FirstTheme)
        FirstTheme.setWindowTitle("1.Знайомство з Python")
        #This is variable with number of page
        self.pagination = 1



#This is image (space) where situated the topic of theme 
        self.header = QtWidgets.QLabel(self.centralwidget)
        self.header.setGeometry(QtCore.QRect(0, 0, 600, 103))
        self.header.setStyleSheet("image: url(:/images/bg-header.jpg)")
        self.header.setText("")
        self.header.setObjectName("header")


#This is topic of the theme.
        self.ThemeName = QtWidgets.QLabel(self.centralwidget)
        self.ThemeName.setGeometry(QtCore.QRect(39, 21, 522, 60))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(18)
        font.setBold(True)
        font.setWeight(75)
        self.ThemeName.setFont(font)
        self.ThemeName.setStyleSheet("QLabel#ThemeName\n"
"{\n"
"color: #fed346;\n"
"background:none;\n"
"}")
        self.ThemeName.setObjectName("ThemeName")
        self.ThemeName.setText("1.Знайомство з мовою програмування\n"
"                           Python")


#This is pushbutton. She may change the text and images on widget to Next theme
        self.toNextTheme = QtWidgets.QPushButton(self.centralwidget)
        self.toNextTheme.setGeometry(QtCore.QRect(310, 662, 100, 25))
#This is font settings for text of this pushButton
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setBold(True)
        font.setWeight(75)
        self.toNextTheme.setFont(font)
#This is css for NextPuchButton
        self.toNextTheme.setStyleSheet("QPushButton#toNextTheme\n"
"{\n"
"   background-color: #225765;\n"
"color: #fed346;\n"
"border-top-right-radius: 5px;\n"
"border-bottom-right-radius: 5px;\n"
"}\n"
"\n"
"QPushButton:hover#toNextTheme\n"
"{\n"
"    background-color: #3674a5;\n"
"}")
        self.toNextTheme.setObjectName("toNextTheme")
        self.toNextTheme.setText("Далі")



#This is pushButton. She is change the text on widget to previous theme
        self.toPreviousTheme = QtWidgets.QPushButton(self.centralwidget)
        self.toPreviousTheme.setEnabled(True)
        self.toPreviousTheme.setGeometry(QtCore.QRect(190, 662, 100, 25))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setBold(True)
        font.setWeight(75)
        self.toPreviousTheme.setFont(font)
        self.toPreviousTheme.setStyleSheet("QPushButton#toPreviousTheme\n"
"{\n"
"   background-color: #225765;\n"
"color: #fed346;\n"
"border-top-left-radius: 5px;\n"
"border-bottom-left-radius: 5px;\n"
"}\n"
"\n"
"QPushButton:hover#toPreviousTheme\n"
"{\n"
"    background-color: #3674a5;\n"
"}")
        self.toPreviousTheme.setObjectName("toPreviousTheme")
        self.toPreviousTheme.setText("Назад")



####################################################################################
###############################     CONTENT     ####################################
####################################################################################


    def page_1(self):
#This is topic for this label (1st paragraph)
        self.P1 = QtWidgets.QLabel(self.centralwidget)
        self.P1.setGeometry(QtCore.QRect(10, 110, 281, 16))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.P1.setFont(font)
        self.P1.setStyleSheet("background-color: none;")
        self.P1.setObjectName("P1")
        self.P1.setText("Коротка історична довідка")



#This is Label with text-content forwarded to 1st paragraph.
        self.textToP1 = QtWidgets.QLabel(self.centralwidget)
        self.textToP1.setGeometry(QtCore.QRect(10, 135, 601, 201))
        font = QtGui.QFont()
        font.setPointSize(10)
        self.textToP1.setFont(font)
        self.textToP1.setStyleSheet("background-color: none;\n"
"")
        self.textToP1.setTextFormat(QtCore.Qt.PlainText)
        self.textToP1.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        self.textToP1.setObjectName("textToP1")
        self.textToP1.setText("Мова програмування Python була створена до 1991 року голландцем Гвідо ван Россум.\n"
"Своє ім\'я - Пайтон (або Пітон) - отримала від назви телесеріалу, а не плазуна.\n"
"Після того, як Россум розробив мову, він виклав його в Інтернет, де спільнота програмістів\n"
"приєдналося до його поліпшення.\n"
"Python активно розвивається в даний час. Часто виходять нові версії.\n"
" Існують дві підтримувані гілки: Python 2.x і Python 3.x. Тут англійською \n"
"буквою \"x\" позначається конкретний реліз. Між другим і третім Пітоном є невелика різниця. \n"
"\n"
"В даному курсі за основу береться Python 3.x.\n"
"Офіційний сайт підтримки мови - https://www.python.org.")



#This is topic for second label (2nd paragraph)
        self.P2 = QtWidgets.QLabel(self.centralwidget)
        self.P2.setGeometry(QtCore.QRect(10, 300, 281, 16))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.P2.setFont(font)
        self.P2.setStyleSheet("background-color: none;")
        self.P2.setObjectName("P2")
        self.P2.setText("Основні особливості мови")



#This is Label with text-content forwarded to 2nd paragraph.
        self.textToP2 = QtWidgets.QLabel(self.centralwidget)
        self.textToP2.setGeometry(QtCore.QRect(10, 320, 601, 311))
        font = QtGui.QFont()
        font.setPointSize(10)
        self.textToP2.setFont(font)
        self.textToP2.setStyleSheet("background-color: none;\n"
"")
        self.textToP2.setTextFormat(QtCore.Qt.PlainText)
        self.textToP2.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        self.textToP2.setObjectName("textToP2")
        self.textToP2.setText("Python - інтерпретована мова програмування. Це означає, що вихідний код частинами\n"
"перетворюється в машинний в процесі його читання спеціальною програмою - інтерпретатором.\n"
"\n"
"Python характеризується ясним синтаксисом. Читати код на ньому легше, ніж на інших мовах\n"
"програмування, т. К. В Пітоні мало використовуються такі допоміжні синтаксичні елементи як \n"
"дужки, крапки з комою. З іншого боку, правила мови змушують програмістів робити \n"
"відступи для позначення вкладених конструкцій. Зрозуміло, що добре оформлений текст \n"
"з малою кількістю відволікаючих елементів читати і розуміти легше.\n"
"\n"
"Python - це повноціннa багато в чому універсальна мова програмування, що використовується в \n"
"різних сферах. Основна, але не єдина, підтримувана їм парадигма, - \n"
"об\'єктно-орієнтоване програмування. Однак в даному курсі ми тільки згадаємо про об\'єкти, \n"
"а будемо вивчати структурне програмування, так як воно є базою. Без знання основних \n"
"типів даних, розгалужень, циклів, функцій немає сенсу вивчати більш складні \n"
"парадигми, т. я. В них все це використовується.\n"
"\n"
"Інтерпретатори Python поширюється вільно на підставі ліцензії подібної \n"
"GNU General Public License.")


    #########################################################################################
    ##########################          FOR BUTTONS          ################################
    #########################################################################################
    ####################       ФУНКЦИОНАЛ ДЛЯ СМЕНЫ КОНТЕНТА       ##########################
    #########################################################################################





        #self.toNextTheme.clicked.connect()
        self.toNextTheme.clicked.connect(self.page_1)
import source_rc


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    FirstTheme = QtWidgets.QMainWindow()
    ui = Ui_FirstTheme()
    ui.setupUi(FirstTheme)
    FirstTheme.show()
    sys.exit(app.exec_())

不要修改Qt设计器生成的代码,而是创建另一个继承的类 并使用初始类填充它

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_FirstTheme(object):
    def setupUi(self, FirstTheme):
        FirstTheme.setObjectName("FirstTheme")
        FirstTheme.resize(600, 700)
        FirstTheme.setMinimumSize(QtCore.QSize(600, 700))
        FirstTheme.setMaximumSize(QtCore.QSize(600, 700))
        icon = QtGui.QIcon.fromTheme("icon.ico")
        FirstTheme.setWindowIcon(icon)
        FirstTheme.setStyleSheet("background-color: #070506;\n"
"color: grey;\n"
"")
        self.centralwidget = QtWidgets.QWidget(FirstTheme)
        self.centralwidget.setObjectName("centralwidget")
        FirstTheme.setCentralWidget(self.centralwidget)
        QtCore.QMetaObject.connectSlotsByName(FirstTheme)
        FirstTheme.setWindowTitle("1.Знайомство з Python")
        #This is variable with number of page
        self.pagination = 1

        #This is image (space) where situated the topic of theme 
        self.header = QtWidgets.QLabel(self.centralwidget)
        self.header.setGeometry(QtCore.QRect(0, 0, 600, 103))
        self.header.setStyleSheet("image: url(lena.jpg)")                    # !!! 
        self.header.setText("")
        self.header.setObjectName("header")

        #This is topic of the theme.
        self.ThemeName = QtWidgets.QLabel(self.centralwidget)
        self.ThemeName.setGeometry(QtCore.QRect(39, 21, 522, 60))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setPointSize(18)
        font.setBold(True)
        font.setWeight(75)
        self.ThemeName.setFont(font)
        self.ThemeName.setStyleSheet("QLabel#ThemeName\n"
"{\n"
"color: #fed346;\n"
"background:none;\n"
"}")
        self.ThemeName.setObjectName("ThemeName")
        self.ThemeName.setText("1.Знайомство з мовою програмування\n"
"                           Python")

        #This is pushbutton. She may change the text and images on widget to Next theme
        self.toNextTheme = QtWidgets.QPushButton(self.centralwidget)
        self.toNextTheme.setGeometry(QtCore.QRect(310, 662, 100, 25))
        #This is font settings for text of this pushButton
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setBold(True)
        font.setWeight(75)
        self.toNextTheme.setFont(font)
        #This is css for NextPuchButton
        self.toNextTheme.setStyleSheet("QPushButton#toNextTheme\n"
"{\n"
"   background-color: #225765;\n"
"color: #fed346;\n"
"border-top-right-radius: 5px;\n"
"border-bottom-right-radius: 5px;\n"
"}\n"
"\n"
"QPushButton:hover#toNextTheme\n"
"{\n"
"    background-color: #3674a5;\n"
"}")
        self.toNextTheme.setObjectName("toNextTheme")
        self.toNextTheme.setText("Далі")

        #This is pushButton. She is change the text on widget to previous theme
        self.toPreviousTheme = QtWidgets.QPushButton(self.centralwidget)
        self.toPreviousTheme.setEnabled(True)
        self.toPreviousTheme.setGeometry(QtCore.QRect(190, 662, 100, 25))
        font = QtGui.QFont()
        font.setFamily("Arial Black")
        font.setBold(True)
        font.setWeight(75)
        self.toPreviousTheme.setFont(font)
        self.toPreviousTheme.setStyleSheet("QPushButton#toPreviousTheme\n"
"{\n"
"   background-color: #225765;\n"
"color: #fed346;\n"
"border-top-left-radius: 5px;\n"
"border-bottom-left-radius: 5px;\n"
"}\n"
"\n"
"QPushButton:hover#toPreviousTheme\n"
"{\n"
"    background-color: #3674a5;\n"
"}")
        self.toPreviousTheme.setObjectName("toPreviousTheme")
        self.toPreviousTheme.setText("Назад")

        #self.toNextTheme.clicked.connect()
#        self.toNextTheme.clicked.connect(self.page_1)

# import source_rc   # !!!


class ExampleApp(QtWidgets.QMainWindow, Ui_FirstTheme):                       # +++
    def __init__(self, parent=None):                                          # +++
        super(ExampleApp, self).__init__(parent)                              # +++

        self.setupUi(self)                                                    # +++

        #self.toNextTheme.clicked.connect()
        self.toNextTheme.clicked.connect(self.page_1)                         # +++

    ###   CONTENT   ###
    def page_1(self):
        print('#This is topic for this label (1st paragraph)')
        self.P1 = QtWidgets.QLabel(self.centralwidget)
        self.P1.setGeometry(QtCore.QRect(10, 110, 281, 16))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.P1.setFont(font)
        self.P1.setStyleSheet("background-color: none;")
        self.P1.setObjectName("P1")
        self.P1.setText("Коротка історична довідка")

        #This is Label with text-content forwarded to 1st paragraph.
        self.textToP1 = QtWidgets.QLabel(self.centralwidget)
        self.textToP1.setGeometry(QtCore.QRect(10, 135, 601, 201))
        font = QtGui.QFont()
        font.setPointSize(10)
        self.textToP1.setFont(font)
        self.textToP1.setStyleSheet("background-color: none;\n"
"")
        self.textToP1.setTextFormat(QtCore.Qt.PlainText)
        self.textToP1.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        self.textToP1.setObjectName("textToP1")
        self.textToP1.setText("Мова програмування Python була створена до 1991 року голландцем Гвідо ван Россум.\n"
"Своє ім\'я - Пайтон (або Пітон) - отримала від назви телесеріалу, а не плазуна.\n"
"Після того, як Россум розробив мову, він виклав його в Інтернет, де спільнота програмістів\n"
"приєдналося до його поліпшення.\n"
"Python активно розвивається в даний час. Часто виходять нові версії.\n"
" Існують дві підтримувані гілки: Python 2.x і Python 3.x. Тут англійською \n"
"буквою \"x\" позначається конкретний реліз. Між другим і третім Пітоном є невелика різниця. \n"
"\n"
"В даному курсі за основу береться Python 3.x.\n"
"Офіційний сайт підтримки мови - https://www.python.org.")

        #This is topic for second label (2nd paragraph)
        self.P2 = QtWidgets.QLabel(self.centralwidget)
        self.P2.setGeometry(QtCore.QRect(10, 300, 281, 16))
        font = QtGui.QFont()
        font.setPointSize(12)
        font.setBold(True)
        font.setWeight(75)
        self.P2.setFont(font)
        self.P2.setStyleSheet("background-color: none;")
        self.P2.setObjectName("P2")
        self.P2.setText("Основні особливості мови")

        #This is Label with text-content forwarded to 2nd paragraph.
        self.textToP2 = QtWidgets.QLabel(self.centralwidget)
        self.textToP2.setGeometry(QtCore.QRect(10, 320, 601, 311))
        font = QtGui.QFont()
        font.setPointSize(10)
        self.textToP2.setFont(font)
        self.textToP2.setStyleSheet("background-color: none;\n"
"")
        self.textToP2.setTextFormat(QtCore.Qt.PlainText)
        self.textToP2.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
        self.textToP2.setObjectName("textToP2")
        self.textToP2.setText("Python - інтерпретована мова програмування. Це означає, що вихідний код частинами\n"
"перетворюється в машинний в процесі його читання спеціальною програмою - інтерпретатором.\n"
"\n"
"Python характеризується ясним синтаксисом. Читати код на ньому легше, ніж на інших мовах\n"
"програмування, т. К. В Пітоні мало використовуються такі допоміжні синтаксичні елементи як \n"
"дужки, крапки з комою. З іншого боку, правила мови змушують програмістів робити \n"
"відступи для позначення вкладених конструкцій. Зрозуміло, що добре оформлений текст \n"
"з малою кількістю відволікаючих елементів читати і розуміти легше.\n"
"\n"
"Python - це повноціннa багато в чому універсальна мова програмування, що використовується в \n"
"різних сферах. Основна, але не єдина, підтримувана їм парадигма, - \n"
"об\'єктно-орієнтоване програмування. Однак в даному курсі ми тільки згадаємо про об\'єкти, \n"
"а будемо вивчати структурне програмування, так як воно є базою. Без знання основних \n"
"типів даних, розгалужень, циклів, функцій немає сенсу вивчати більш складні \n"
"парадигми, т. я. В них все це використовується.\n"
"\n"
"Інтерпретатори Python поширюється вільно на підставі ліцензії подібної \n"
"GNU General Public License.")

        self.P1.show()                   # +++
        self.textToP1.show()             # +++
        self.P2.show()                   # +++
        self.textToP2.show()             # +++


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
#    FirstTheme = QtWidgets.QMainWindow()
#    ui = Ui_FirstTheme()
#    ui.setupUi(FirstTheme)
#    FirstTheme.show()
    w = ExampleApp()
    w.show()
    sys.exit(app.exec_())

Ui_FirstTheme类是由pyuic5生成的,然后您对其进行了修改还是手工编码的?是的,我在pyqt设计器中创建了这个窗口,并将其转换为.py