ฉันมีปัญหากับ PyQt4 ฉันมีคลาสที่สืบทอดมาจาก QWidget คลาสนี้ใช้โครงร่างเพื่อจัดเก็บ QLabel และ QLineEdit นี่คือรหัส:
class SearchBar(QtGui.QWidget):
def __init__(self, parent=None):
super(SearchBar, self).__init__(parent)
self.setStyleSheet(SEARCHBAR_STYLE)
layout = QtGui.QHBoxLayout()
layout.setSpacing(0)
layout.setMargin(0)
layout.addStrut(SEARCHAR_HEIGHT)
lbl_notification = QtGui.QLabel('Hi')
lbl_notification.setStyleSheet(SEARCHBAR_NOTIFICATION_STYLE)
layout.addSpacing(10)
layout.addWidget(lbl_notification)
searchbox = QLineEdit('Search')
layout.addStretch()
layout.addWidget(searchbox)
layout.addSpacing(10)
self.setLayout(layout)
และนี่คือสไตล์ชีต:
SEARCHBAR_STYLE = """
QWidget {
background: #424a7d;
}
.QWidget {
border: 1px solid grey;
}
QLabel {
border-top: 1px solid grey;
border-bottom: 1px solid grey;
}
"""
ตอนนี้ ปัญหาของฉันคือสไตล์ชีทใช้ไม่ได้ตามที่ฉันต้องการ ใช้กับ QLabel ของฉันเฉพาะเมื่อเส้นขอบควรอยู่รอบวัตถุทั้งหมด:
เมื่อฉันมีฟังก์ชันที่สร้างแถบค้นหาเป็น QWidget มันทำงานได้อย่างสมบูรณ์แบบ แต่ตอนนี้ฉันเปลี่ยนเป็นคลาสแล้ว มันใช้งานไม่ได้ ผมทำอะไรผิดหรือเปล่า?
แก้ไข: ฉันกำลังพยายามทำสิ่งนี้ให้สำเร็จ:
แก้ไข 2: รหัสก่อนหน้าก่อนที่ฉันจะเปลี่ยนเป็นคลาสคือ:
def create_bar():
layout = QtGui.QHBoxLayout()
layout.setSpacing(0)
layout.setMargin(0)
layout.addStrut(SEARCHAR_HEIGHT)
lbl_notification = QtGui.QLabel('Hi')
lbl_notification.setStyleSheet(SEARCHBAR_NOTIFICATION_STYLE)
layout.addSpacing(10)
layout.addWidget(lbl_notification)
search_bar = QtGui.QLineEdit('Search')
search_bar.setMinimumSize(200, 25)
search_bar.setMaximumSize(200, 25)
search_bar.setStyleSheet(SEARCHBOX_STYLE)
layout.addStretch()
layout.addWidget(search_bar)
layout.addSpacing(10)
widget = QtGui.QWidget()
widget.setStyleSheet(SEARCHBAR_STYLE)
widget.setLayout(layout)
return widget
SearchBox
คืออะไร? - person eyllanesc   schedule 04.09.2017