本文整理汇总了Python中PyQt5.QtWidgets.QVBoxLayout.isEmpty方法的典型用法代码示例。如果您正苦于以下问题:Python QVBoxLayout.isEmpty方法的具体用法?Python QVBoxLayout.isEmpty怎么用?Python QVBoxLayout.isEmpty使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QVBoxLayout
的用法示例。
在下文中一共展示了QVBoxLayout.isEmpty方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: MainWindow
# 需要导入模块: from PyQt5.QtWidgets import QVBoxLayout [as 别名]
# 或者: from PyQt5.QtWidgets.QVBoxLayout import isEmpty [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()