本文整理汇总了Python中PyQt5.QtWidgets.QVBoxLayout.takeAt方法的典型用法代码示例。如果您正苦于以下问题:Python QVBoxLayout.takeAt方法的具体用法?Python QVBoxLayout.takeAt怎么用?Python QVBoxLayout.takeAt使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QVBoxLayout
的用法示例。
在下文中一共展示了QVBoxLayout.takeAt方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: PluginFrame
# 需要导入模块: from PyQt5.QtWidgets import QVBoxLayout [as 别名]
# 或者: from PyQt5.QtWidgets.QVBoxLayout import takeAt [as 别名]
class PluginFrame(QFrame):
def __init__(self, plugins, highlighted_plugins=None, parent=None):
"""
:type plugins: list of Plugin
:type highlighted_plugins: list of Plugin
"""
super().__init__(parent)
self.ui = Ui_FramePlugins()
self.ui.setupUi(self)
self.model = PluginListModel(plugins, highlighted_plugins=highlighted_plugins)
self.ui.listViewPlugins.setModel(self.model)
self.settings_layout = QVBoxLayout()
self.ui.groupBoxSettings.setLayout(self.settings_layout)
self.create_connects()
try:
self.restoreGeometry(constants.SETTINGS.value("{}/geometry".format(self.__class__.__name__)))
except TypeError:
pass
def create_connects(self):
self.ui.listViewPlugins.selectionModel().selectionChanged.connect(self.on_list_selection_changed)
for plugin in self.model.plugins:
if hasattr(plugin, "show_proto_sniff_dialog_clicked"):
plugin.show_proto_sniff_dialog_clicked.connect(self.parent().parent().show_proto_sniff_dialog)
def save_enabled_states(self):
for plugin in self.model.plugins:
constants.SETTINGS.setValue(plugin.name, plugin.enabled)
@pyqtSlot()
def on_list_selection_changed(self):
i = self.ui.listViewPlugins.currentIndex().row()
self.ui.txtEditPluginDescription.setText(self.model.plugins[i].description)
if self.settings_layout.count() > 0:
widget = self.settings_layout.takeAt(0).widget()
self.settings_layout.removeWidget(widget)
widget.setParent(None)
self.settings_layout.addWidget(self.model.plugins[i].settings_frame)
示例2: PromptContainer
# 需要导入模块: from PyQt5.QtWidgets import QVBoxLayout [as 别名]
# 或者: from PyQt5.QtWidgets.QVBoxLayout import takeAt [as 别名]
class PromptContainer(QWidget):
"""Container for prompts to be shown above the statusbar.
This is a per-window object, however each window shows the same prompt.
Attributes:
_layout: The layout used to show prompts in.
_win_id: The window ID this object is associated with.
Signals:
update_geometry: Emitted when the geometry should be updated.
"""
STYLESHEET = """
{% set prompt_radius = config.get('ui', 'prompt-radius') %}
QWidget#PromptContainer {
{% if config.get('ui', 'status-position') == 'top' %}
border-bottom-left-radius: {{ prompt_radius }}px;
border-bottom-right-radius: {{ prompt_radius }}px;
{% else %}
border-top-left-radius: {{ prompt_radius }}px;
border-top-right-radius: {{ prompt_radius }}px;
{% endif %}
}
QWidget {
font: {{ font['prompts'] }};
color: {{ color['prompts.fg'] }};
background-color: {{ color['prompts.bg'] }};
}
QTreeView {
selection-background-color: {{ color['prompts.selected.bg'] }};
}
QTreeView::item:selected, QTreeView::item:selected:hover {
background-color: {{ color['prompts.selected.bg'] }};
}
"""
update_geometry = pyqtSignal()
def __init__(self, win_id, parent=None):
super().__init__(parent)
self._layout = QVBoxLayout(self)
self._layout.setContentsMargins(10, 10, 10, 10)
self._win_id = win_id
self._prompt = None
self.setObjectName('PromptContainer')
self.setAttribute(Qt.WA_StyledBackground, True)
style.set_register_stylesheet(self)
message.global_bridge.prompt_done.connect(self._on_prompt_done)
prompt_queue.show_prompts.connect(self._on_show_prompts)
message.global_bridge.mode_left.connect(self._on_global_mode_left)
def __repr__(self):
return utils.get_repr(self, win_id=self._win_id)
@pyqtSlot(usertypes.Question)
def _on_show_prompts(self, question):
"""Show a prompt for the given question.
Args:
question: A Question object or None.
"""
item = self._layout.takeAt(0)
if item is not None:
widget = item.widget()
log.prompt.debug("Deleting old prompt {}".format(widget))
widget.hide()
widget.deleteLater()
if question is None:
log.prompt.debug("No prompts left, hiding prompt container.")
self._prompt = None
self.hide()
return
classes = {
usertypes.PromptMode.yesno: YesNoPrompt,
usertypes.PromptMode.text: LineEditPrompt,
usertypes.PromptMode.user_pwd: AuthenticationPrompt,
usertypes.PromptMode.download: DownloadFilenamePrompt,
usertypes.PromptMode.alert: AlertPrompt,
}
klass = classes[question.mode]
prompt = klass(question)
log.prompt.debug("Displaying prompt {}".format(prompt))
self._prompt = prompt
if not question.interrupted:
# If this question was interrupted, we already connected the signal
question.aborted.connect(
lambda: modeman.leave(self._win_id, prompt.KEY_MODE, 'aborted',
maybe=True))
modeman.enter(self._win_id, prompt.KEY_MODE, 'question asked')
#.........这里部分代码省略.........
示例3: ChapterAddWidget
# 需要导入模块: from PyQt5.QtWidgets import QVBoxLayout [as 别名]
# 或者: from PyQt5.QtWidgets.QVBoxLayout import takeAt [as 别名]
class ChapterAddWidget(QWidget):
CHAPTERS = pyqtSignal(dict)
def __init__(self, gallery, parent=None):
super().__init__(parent)
self.setWindowFlags(Qt.Window)
self.current_chapters = len(gallery.chapters)
self.added_chaps = 0
layout = QFormLayout()
self.setLayout(layout)
lbl = QLabel('{} by {}'.format(gallery.title, gallery.artist))
layout.addRow('Gallery:', lbl)
layout.addRow('Current chapters:', QLabel('{}'.format(self.current_chapters)))
new_btn = QPushButton('New')
new_btn.clicked.connect(self.add_new_chapter)
new_btn.adjustSize()
add_btn = QPushButton('Finish')
add_btn.clicked.connect(self.finish)
add_btn.adjustSize()
new_l = QHBoxLayout()
new_l.addWidget(add_btn, alignment=Qt.AlignLeft)
new_l.addWidget(new_btn, alignment=Qt.AlignRight)
layout.addRow(new_l)
frame = QFrame()
frame.setFrameShape(frame.StyledPanel)
layout.addRow(frame)
self.chapter_l = QVBoxLayout()
frame.setLayout(self.chapter_l)
new_btn.click()
self.setMaximumHeight(550)
self.setFixedWidth(500)
if parent:
self.move(parent.window().frameGeometry().topLeft() +
parent.window().rect().center() -
self.rect().center())
else:
frect = self.frameGeometry()
frect.moveCenter(QDesktopWidget().availableGeometry().center())
self.move(frect.topLeft())
self.setWindowTitle('Add Chapters')
def add_new_chapter(self):
chap_layout = QHBoxLayout()
self.added_chaps += 1
curr_chap = self.current_chapters+self.added_chaps
chp_numb = QSpinBox(self)
chp_numb.setMinimum(1)
chp_numb.setValue(curr_chap)
curr_chap_lbl = QLabel('Chapter {}'.format(curr_chap))
def ch_lbl(n): curr_chap_lbl.setText('Chapter {}'.format(n))
chp_numb.valueChanged[int].connect(ch_lbl)
chp_path = PathLineEdit()
chp_path.folder = True
chp_path.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)
chp_path.setPlaceholderText('Right/Left-click to open folder explorer.'+
' Leave empty to not add.')
chap_layout.addWidget(chp_path, 3)
chap_layout.addWidget(chp_numb, 0)
self.chapter_l.addWidget(curr_chap_lbl,
alignment=Qt.AlignLeft)
self.chapter_l.addLayout(chap_layout)
def finish(self):
chapters = {}
widgets = []
x = True
while x:
x = self.chapter_l.takeAt(0)
if x:
widgets.append(x)
for l in range(1, len(widgets), 1):
layout = widgets[l]
try:
line_edit = layout.itemAt(0).widget()
spin_box = layout.itemAt(1).widget()
except AttributeError:
continue
p = line_edit.text()
c = spin_box.value() - 1 # because of 0-based index
if os.path.exists(p):
chapters[c] = p
self.CHAPTERS.emit(chapters)
self.close()
示例4: MainWindow
# 需要导入模块: from PyQt5.QtWidgets import QVBoxLayout [as 别名]
# 或者: from PyQt5.QtWidgets.QVBoxLayout import takeAt [as 别名]
#.........这里部分代码省略.........
def initUI(self):
self.content = QWidget()
self.hbox = QHBoxLayout(self.content)
self.setCentralWidget(self.content)
self.friend_list = QListWidget()
self.friend_list.itemClicked.connect(self.friendClicked)
self.message_scroll = QScrollArea()
self.message_scroll.setWidgetResizable(True)
#TODO have a setting to disable this
self.message_scroll.verticalScrollBar().rangeChanged.connect(self.scrollBottom)
self.message_input = MessageInput()
self.message_input.sendMessage.connect(self.sendMessage)
self.message_split = QSplitter(Qt.Vertical)
self.message_split.addWidget(self.message_scroll)
self.message_split.addWidget(self.message_input)
self.main_split = QSplitter(Qt.Horizontal)
self.main_split.addWidget(self.friend_list)
self.main_split.addWidget(self.message_split)
self.hbox.addWidget(self.main_split)
self.show()
def addFriend(self, username=None):
if type(username) is bool:
add_friend_dialog = AddFriendDialog(self.client_socket)
add_friend_dialog.exec_()
if add_friend_dialog.selected_user == None:
return
username = add_friend_dialog.selected_user
self.chats[username] = {"participants":[username], "messages":[]}
#TODO we should probably sanatize these to prevent directory manipulation
friend = QListWidgetItem(QIcon(config.ICON_DIR + username + ".png"), username)
self.friend_list.addItem(friend)
def createChat(self, chat_name=None, participants=None):
if type(chat_name) is bool:
create_chat_dialog = CreateChatDialog()
create_chat_dialog.exec_()
if not create_chat_dialog.created_chat:
return
chat_name = create_chat_dialog.chat_name
participants = create_chat_dialog.participants
self.chats[chat_name] = {"participants":participants, "messages":[]}
self.friend_list.addItem(QListWidgetItem(chat_name))
def friendClicked(self, item):
self.loadMessages(str(item.text()))
def loadMessages(self, chat):
#self.clearMessages()
#TODO make the message history look pretty
#TODO consider storing a message history for each chat and switch between when needed
#TODO create a chat class and store the chat name as well as the participants there
#TODO index message histories by chat name
self.message_history = QVBoxLayout()
self.message_history.setSpacing(0)
self.message_history.setContentsMargins(0,0,0,0)
self.message_history.insertStretch(-1, 1)
self.message_history_container = QWidget()
self.message_history_container.setLayout(self.message_history)
self.message_scroll.setWidget(self.message_history_container)
for message in self.chats[chat]["messages"]:
self.drawMessage(message)
def clearMessages(self):
while not self.message_history.isEmpty():
self.message_history.takeAt(0)
def sendMessage(self):
message = self.message_input.toPlainText().strip()
chat = self.friend_list.selectedItems()[0].text()
self.client_socket.sendMessage(message, chat, self.chats[chat]["participants"])
print("Sending: %s to %s" % (message, chat))
self.message_input.setText("")
self.recvMessage(chat, {"sender":self.username, "message":message})
def recvMessage(self, chat, message):
self.chats[chat]["messages"].append(message)
current_chat = self.friend_list.selectedItems()[0].text()
if current_chat == chat:
self.drawMessage(message)
def drawMessage(self, message):
#TODO add a timestamp to messages
new_message = QLabel(message["sender"] + ':' + message["message"])
self.message_history.addWidget(new_message)
def scrollBottom(self):
self.message_scroll.verticalScrollBar().setValue(self.message_scroll.verticalScrollBar().maximum())
def disconnect(self):
self.client_socket.disconnect()
示例5: notifyTab
# 需要导入模块: from PyQt5.QtWidgets import QVBoxLayout [as 别名]
# 或者: from PyQt5.QtWidgets.QVBoxLayout import takeAt [as 别名]
#.........这里部分代码省略.........
pixmap=QPixmap(self.obj.tagDict[self.obj.notif[i].tag])
pixmap = pixmap.scaled(45, 45)
self.tag_lbl.append(QLabel(self))
self.tag_lbl[i].setPixmap(pixmap)
for i1 in range(0,len(self.obj.notif)):
self.notif_lbl.append(QLabel(self))
self.notif_lbl[i1].setScaledContents(False)
self.notif_lbl[i1].setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.notif_lbl[i1].setText(self.obj.notif[i1].notif_text)
self.notif_lbl[i1].setObjectName("nlbl")
self.btn.append(QPushButton('Get Link'))
self.btn[i1].setObjectName("btn")
for i2 in range(0,len(self.obj.notif)):
self.nFrames.append(notifyFrames(self.notif_lbl[i2],self.tag_lbl[i2],self.btn[i2]))
tag = self.obj.notif[i2].tag
if tag ==2 or tag==3 or tag==4:
self.nFrames[i2].setObjectName('nFrameOdd')
else:
self.nFrames[i2].setObjectName('nFrameEven')
self.widget = QWidget(self)
self.vbox = QVBoxLayout()
for index, frame in enumerate(self.nFrames):
self.vbox.addWidget(frame)
if len(self.nFrames)<4:
self.dframe = QFrame()
self.dframe.setObjectName('nFrameDummy')
self.vbox.addWidget(self.dframe)
self.d_ = True
self.vbox.setContentsMargins(0,0,0,0)
self.vbox.setSpacing(3)
self.widget.setLayout(self.vbox)
self.scroll = QScrollArea(self)
self.scroll.setWidget(self.widget)
self.scroll.setWidgetResizable(True)
self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
vbox1 = QVBoxLayout()
vbox1.setContentsMargins(0,0,0,0)
vbox1.setSpacing(0)
vbox1.addWidget(self.scroll)
self.setLayout(vbox1)
def updater(self):
marker=len(self.nFrames)
marker1 = len(self.nFrames)
for i in range(0,len(self.obj.notif)):
pixmap=QPixmap(self.obj.tagDict[self.obj.notif[i].tag])
pixmap = pixmap.scaled(45, 45)
self.tag_lbl.append(QLabel(self))
self.tag_lbl[marker].setPixmap(pixmap)
marker=marker+1
marker=marker1
for i1 in range(0,len(self.obj.notif)):
self.notif_lbl.append(QLabel(self))
self.notif_lbl[marker].setScaledContents(False)
self.notif_lbl[marker].setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.notif_lbl[marker].setText(self.obj.notif[i1].notif_text)
self.notif_lbl[marker].setObjectName("nlbl")
self.btn.append(QPushButton('Get Link'))
self.btn[marker].setObjectName("btn")
marker+=1
marker=marker1
for i2 in range(0,len(self.obj.notif)):
self.nFrames.append(notifyFrames(self.notif_lbl[marker],self.tag_lbl[marker],self.btn[marker]))
marker+=1
marker=marker1
for i3 in range(len(self.nFrames)-1,marker-1,-1):
self.vbox.insertWidget(0,self.nFrames[i3])
tag = self.obj.notif[i3-marker].tag
if tag ==2 or tag==3 or tag==4:
self.nFrames[i3].setObjectName('nFrameOdd')
self.nFrames[i3].setStyleSheet(' #nFrameOdd{background-color:#F5F5DC;min-height:110px;max-height:110px;min-width:805px;}')
else:
self.nFrames[i3].setObjectName('nFrameEven')
self.nFrames[i3].setStyleSheet(' #nFrameEven{background-color: rgb(255, 250, 175);min-height:110px;max-height:110px;min-width:805px;}')
if len(self.nFrames)>=4 and self.d_==True:
child = self.vbox.takeAt(len(self.nFrames))
if child.widget() is not None:
child.widget().deleteLater()
elif child.layout() is not None:
clearLayout(child.layout())
self.dframe.deleteLater()
self.d_=False
示例6: courseTab
# 需要导入模块: from PyQt5.QtWidgets import QVBoxLayout [as 别名]
# 或者: from PyQt5.QtWidgets.QVBoxLayout import takeAt [as 别名]
class courseTab(QWidget):
def __init__(self,parent_):
super(courseTab,self).__init__(parent_)
self.parent_=parent_
self.obj=parent_.obj
self.initUI()
def initUI(self):
self.btn = []
self.lbl = []
self.cFrames =[]
self.marker=0
self.d_=False
if len(self.obj.courses) is 0:
self.lbl.append(QLabel(self))
self.lbl[self.marker].setText('Your credentials have been verified but we couldn\'t configure you up. Wait for auto-update')
self.lbl[self.marker].setObjectName("slbl")
self.cFrames.append(errorFrame(self.lbl[self.marker]))
for i1 in range(self.marker,len(self.obj.courses)):
self.lbl.append(QLabel(self))
self.lbl[i1].setText(self.obj.courses[i1].c_name.upper())
self.lbl[i1].setObjectName("lbl")
self.btn.append(QPushButton('FILES'))
self.btn[i1].setObjectName("btn")
self.btn[i1].id=i1
self.btn[i1].clicked.connect(partial(self.createItemTab,self.btn[i1].id))
for i2 in range(self.marker,len(self.obj.courses)):
self.cFrames.append(courseFrames(self.lbl[i2],self.btn[i2]))
self.marker=len(self.obj.courses)
self.widget = QWidget(self)
self.vbox = QVBoxLayout()
self.vbox.setContentsMargins(0,0,0,0)
self.vbox.setSpacing(3)
for index, frame in enumerate(self.cFrames):
if index%2==0:
frame.setObjectName('cFrameEven')
else:
frame.setObjectName('cFrameOdd')
self.vbox.addWidget(frame)
if len(self.cFrames)<4:
self.dframe = QFrame()
self.dframe.setObjectName('nFrameDummy')
self.vbox.addWidget(self.dframe)
self.d_=True
self.widget.setLayout(self.vbox)
self.scroll = QScrollArea(self)
self.scroll.setWidget(self.widget)
self.scroll.setWidgetResizable(True)
self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
vbox1 = QVBoxLayout()
vbox1.setContentsMargins(0,0,0,0)
vbox1.setSpacing(0)
vbox1.addWidget(self.scroll)
self.setLayout(vbox1)
def createItemTab(self,id_):
self.parent_.callItemTab(id_)
def updater(self):
if self.obj.dummy_courses is '':
return
else:
if self.d_==True:
child = self.vbox.takeAt(len(self.cFrames))
if child.widget() is not None:
child.widget().deleteLater()
elif child.layout() is not None:
clearLayout(child.layout())
self.dframe.deleteLater()
self.d_=False
if self.marker==0:
self.cFrames[0].deleteLater()
self.lbl[0].deleteLater()
child = self.vbox.takeAt(0)
if child.widget() is not None:
child.widget().deleteLater()
elif child.layout() is not None:
clearLayout(child.layout())
self.lbl.pop(0)
self.cFrames.pop(0)
for i1 in range(self.marker,len(self.obj.courses)):
#.........这里部分代码省略.........
示例7: itemTab
# 需要导入模块: from PyQt5.QtWidgets import QVBoxLayout [as 别名]
# 或者: from PyQt5.QtWidgets.QVBoxLayout import takeAt [as 别名]
#.........这里部分代码省略.........
self.widget.setLayout(self.vbox)
self.scroll = QScrollArea(self)
self.scroll.setWidget(self.widget)
self.scroll.setWidgetResizable(True)
self.scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.scroll.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOn)
vbox1 = QVBoxLayout()
vbox1.setContentsMargins(0,0,0,0)
vbox1.setSpacing(0)
vbox1.addWidget(self.scroll)
self.setLayout(vbox1)
def shortenTabName(self,cname):
list1 =[]
for i, ch in enumerate(cname):
list1.append(ch)
if len(list1)==40:
if list1[i]== ' ':
list1.pop(i)
list1.append('...')
break
return ''.join(list1)
def updater(self):
self.x=+1
if self.obj.courses[self.id_].dummy_items is '':
return
else:
if self.d_==True:
child = self.vbox.takeAt(len(self.iFrames))
if child.widget() is not None:
child.widget().deleteLater()
elif child.layout() is not None:
clearLayout(child.layout())
self.dframe.deleteLater()
self.d_=False
marker = len(self.iFrames)-1
a = ["assignment","exam","quiz"]
for iz in range(marker,len(self.obj.courses[self.id_].items)):
if self.obj.courses[self.id_].items[iz].saved==2:
pixmap=QPixmap(self.obj.tagDict[3])
else:
str_= self.obj.courses[self.id_].items[iz].i_name.lower()
if any(x in str_ for x in a):
pixmap=QPixmap(self.obj.tagDict[4])
else:
pixmap=QPixmap(self.obj.tagDict[self.obj.courses[self.id_].items[iz].type+2])
pixmap = pixmap.scaled(45, 45)
self.tag_lbl.append(QLabel(self))
self.tag_lbl[iz].setPixmap(pixmap)
for i1 in range(marker,len(self.obj.courses[self.id_].items)):
self.lbl.append(ExtendedQLabel(self,i1))
cname = self.shortenTabName(self.obj.courses[self.id_].items[i1].i_name)
self.lbl[i1].setText(cname)
self.lbl[i1].setObjectName("ilbl")
self.sbtn[i1] = QPushButton('Save')
self.sbtn[i1].setObjectName("sbtn")
self.gbtn.append(QPushButton(QIcon(':/Assets/link.png'),''))
self.gbtn[i1].setObjectName("linkBtn")