第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

實現(xiàn)窗口中對象的對齊,從另一個.py文件添加圖形

實現(xiàn)窗口中對象的對齊,從另一個.py文件添加圖形

Helenr 2022-09-20 17:51:01
所以,我想問你關(guān)于在PyQt5中更好地組織多個,,圖。以前,我得到了一些幫助,使用網(wǎng)格來實現(xiàn)我放入的對象更好地對齊。buttonsTextBoxMy Window但是,我試圖編碼的結(jié)局仍然有點遠(yuǎn)。以下是我到目前為止所得到的:from PyQt5 import QtWidgets, QtCorefrom PyQt5.QtWidgets import *import sysclass Okno(QMainWindow):    def __init__(self):        super(Okno, self).__init__()        self.setGeometry(500, 500, 900, 500)        self.setWindowTitle("My window")        self.button1 = QtWidgets.QPushButton()        self.button2 = QtWidgets.QPushButton()        self.TextBox1 = QLineEdit(self)  # Parameter self - add text box to my Window "Okno"        self.TextBox2 = QLineEdit(self)        self.TextBox3 = QLineEdit(self)        self.TextBox4 = QLineEdit(self)   # Baudrate        self.TextBox5 = QLineEdit(self)   # Parity        self.TB_TEMP_IN = QLineEdit(self)   # Temp_IN        self.TB_TEMP_OUT = QLineEdit(self)   # Temp_OUT        self.label1 = QtWidgets.QLabel()  # TextBox1, pressure_IN        self.label2 = QtWidgets.QLabel()        self.label3 = QtWidgets.QLabel()        self.label4 = QtWidgets.QLabel()  # TextBox3, pressure_OUT        self.label_TEMP_IN = QtWidgets.QLabel()        self.label_TEMP_OUT = QtWidgets.QLabel()        self.iniUI()在添加更多對象時,我注意到的一件事是很難組織起來。如果我正確理解它的工作原理,我必須將網(wǎng)格擴(kuò)展到10 x 6,但是對齊方式(左,中,右)不會以對齊順序?qū)ο筮M(jìn)行排序,例如由絕對邊界定義的行/列。Grid至于按鈕,文本框,...我應(yīng)該能夠?qū)λ鼈冞M(jìn)行編程,我只是沒有太多使用Windows應(yīng)用程序的經(jīng)驗,而主要是做控制臺應(yīng)用程序。但是,我應(yīng)該如何將兩個圖形添加到中?我正在使用matplotlib.pyplot將它們繪制在另一個.py文件中,我使用熊貓從.xls文件加載部分?jǐn)?shù)據(jù),另一部分(數(shù)據(jù)輸出)將通過串行(RS232)或TCP / IP接口接收。我必須實時繪制它們并能夠存儲它們(.txt或.csv,這并不重要)。My Window您能否給我一些關(guān)于選擇“我的窗口”的正確概念的提示,以實現(xiàn)我在下面附加的示例,并能夠在將來“輕松”添加其他對象(如有必要)。我絕對認(rèn)為窗口中的對象越多,就越需要更好的組織,因為方法和類都變得很長。iniUI(self)Okno(QMainWindow)我舉了一個簡單的例子來說明我想要實現(xiàn)的目標(biāo):
查看完整描述

1 回答

?
紫衣仙女

TA貢獻(xiàn)1839條經(jīng)驗 獲得超15個贊

在將微件添加到布局時設(shè)置構(gòu)件的對齊方式不會影響構(gòu)件的對齊方式,而只會影響它們在布局提供的空間中的對齊方式。此外,許多小部件會自動嘗試擴(kuò)展自己(如 QLabel 或項目視圖)。

例如,QLabel具有文本的左/垂直居中的默認(rèn)對齊方式,因此您需要設(shè)置對齊方式,但如果其他小部件允許,它仍將嘗試擴(kuò)展其可用空間。

要獲得所需的內(nèi)容,您必須考慮小部件之間的間距,它們(這表示小部件在布局中使用時對其大小的“意愿”,如果它具有固定的大小,是否可以增長/擴(kuò)展,是否可以縮小等)。sizePolicy

由于您希望列之間留出一些空間,因此最簡單的方法是在布局中保留空列,并使用 setColumnStretch() 在這些列上設(shè)置拉伸因子,以便它們嘗試盡可能多地擴(kuò)展。

最后,對于復(fù)雜的結(jié)構(gòu),最好使用嵌套布局,這意味著您將為小部件設(shè)置一個主布局,并向其添加“子”布局,以便每個“部分”都有自己的布局管理器,獨立于其他布局。在下面的示例中,我實現(xiàn)了如下結(jié)構(gòu):

  +-------------- main vertical layout ---------------+

    |                                                   |

    |  +------------ button grid layout -------------+  |

    |  |title|    |(empty)|      |(empty)|     |title|  |

    |  +-----+----+-------+------+-------+-----+-----+  |

    |  |label|edit|       |input |       |label|edit |  |

    |  +-----+----+-------+------+-------+-----+-----+  |

    |  |label|edit|       |input |       |label|edit |  |

    |  +-----+----+-------+------+-------+-----+-----+  |

    |  |label|edit|       |input |       |label|edit |  |

    |  +-----+----+-------+------+-------+-----+-----+  |

    +---------------------------------------------------+

    |                                                   |

    |  +---------- graph horizontal layout ----------+  |

    |  |                      |                      |  |

    |  |       left graph     |      right graph     |  |

    |  |                      |                      |  |

    |  +----------------------+----------------------+  |

    +---------------------------------------------------+

    |                                                   |

    |  +--------- button horizontal layout ----------+  |

    |  |        |                           |        |  |

    |  | button |         (stretch)         | button |  |

    |  |        |                           |        |  |

    |  +--------+---------------------------+--------+  |

    +---------------------------------------------------+ 

以下是它的顯示方式:

這就是代碼。請注意,我從初始化中刪除了小部件創(chuàng)建(如果您使用函數(shù),那么在其他地方創(chuàng)建它們沒有多大意義)。initUi


from PyQt5 import QtWidgets, QtCore

from matplotlib.figure import Figure

from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas

import sys



class Okno(QtWidgets.QMainWindow):

    def __init__(self):

        super(Okno, self).__init__()

        self.setGeometry(500, 500, 900, 500)

        self.setWindowTitle("My window")

        self.iniUI()


    def iniUI(self):

        w = QtWidgets.QWidget()

        self.setCentralWidget(w)


        mainLayout = QtWidgets.QVBoxLayout(w)


        grid = QtWidgets.QGridLayout()

        mainLayout.addLayout(grid)


        self.dataInputLabel = QtWidgets.QLabel('Data Input')

        grid.addWidget(self.dataInputLabel, 0, 0)

        self.dataInputLabel.setStyleSheet('color: red')


        portSettingLabel = QtWidgets.QLabel('Port setting', alignment=QtCore.Qt.AlignCenter)

        grid.addWidget(portSettingLabel, 0, 3)


        self.dataOutputLabel = QtWidgets.QLabel('Data Output', alignment=QtCore.Qt.AlignRight|QtCore.Qt.AlignVCenter)

        grid.addWidget(self.dataOutputLabel, 0, 6)

        self.dataOutputLabel.setStyleSheet('color: blue')


        # set the vertical policy to Maximum for labels, so they don't try to

        # expand themselves if there's more available space

        for label in (self.dataInputLabel, portSettingLabel, self.dataOutputLabel):

            label.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)


        grid.addWidget(QtWidgets.QLabel('Pressure [kPa]'), 1, 0)

        self.inputPressure = QtWidgets.QLineEdit(readOnly=True)

        grid.addWidget(self.inputPressure, 1, 1)


        grid.addWidget(QtWidgets.QLabel('Temperature [K]'), 2, 0)

        self.inputTemp = QtWidgets.QLineEdit(readOnly=True)

        grid.addWidget(self.inputTemp, 2, 1)


        grid.addWidget(QtWidgets.QLabel('Humidity [%]'), 3, 0)

        self.inputHumidity = QtWidgets.QLineEdit(readOnly=True)

        grid.addWidget(self.inputHumidity, 3, 1)


        self.portEdit = QtWidgets.QLineEdit(placeholderText='Enter port')

        grid.addWidget(self.portEdit, 1, 3)

        self.baudEdit = QtWidgets.QLineEdit(placeholderText='Baudrate')

        grid.addWidget(self.baudEdit, 2, 3)

        self.parityEdit = QtWidgets.QLineEdit(placeholderText='Parity')

        grid.addWidget(self.parityEdit, 3, 3)


        grid.addWidget(QtWidgets.QLabel('Pressure [kPa]'), 1, 5)

        self.outputPressure = QtWidgets.QLineEdit(readOnly=True)

        grid.addWidget(self.outputPressure, 1, 6)


        grid.addWidget(QtWidgets.QLabel('Temperature [K]'), 2, 5)

        self.outputTemp = QtWidgets.QLineEdit(readOnly=True)

        grid.addWidget(self.outputTemp, 2, 6)


        grid.addWidget(QtWidgets.QLabel('Humidity [%]'), 3, 5)

        self.outputHumidity = QtWidgets.QLineEdit(readOnly=True)

        grid.addWidget(self.outputHumidity, 3, 6)


        grid.setColumnStretch(2, 1)

        grid.setColumnStretch(4, 1)


        graphLayout = QtWidgets.QHBoxLayout()

        mainLayout.addLayout(graphLayout)

        # here insert your graphs...

        self.graphLeft = FigureCanvas(Figure())

        graphLayout.addWidget(self.graphLeft)

        self.graphRight = FigureCanvas(Figure())

        graphLayout.addWidget(self.graphRight)


        buttonLayout = QtWidgets.QHBoxLayout()

        mainLayout.addLayout(buttonLayout)


        self.openButton = QtWidgets.QPushButton('Open file')

        self.openButton.setMinimumWidth(150)

        self.openButton.clicked.connect(self.open_file)

        buttonLayout.addWidget(self.openButton)


        # add an empty "stretch", which acts as an expanding spacer on box layouts

        buttonLayout.addStretch()


        self.exitButton = QtWidgets.QPushButton('Exit')

        self.exitButton.clicked.connect(self.close)

        buttonLayout.addWidget(self.exitButton)

最后,考慮使用Qt Designer,這對于創(chuàng)建復(fù)雜的布局非常有用(或者,如果您仍然想通過代碼完成所有操作,則至少在設(shè)計它們的過程中可視化它們)。請注意,在這種情況下,您應(yīng)該遵循使用設(shè)計器的建議準(zhǔn)則(最重要的是,永遠(yuǎn)不要編輯使用實用程序生成的python文件),或者使用模塊中的(其中是要使用ui設(shè)置的小部件/窗口)。pyuicloadUi('yourguifile.ui', self)selfPyQt5.uic

查看完整回答
反對 回復(fù) 2022-09-20
  • 1 回答
  • 0 關(guān)注
  • 80 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號