python选项卡控件_python-如何在笔记本小部件的选项卡上切换...

本文提供了一个使用Tkinter和ttk Notebook小部件创建带有多选项卡GUI的示例。每个选项卡都是一个自定义的MyTab类实例,具有独立的事件绑定,如点击事件和焦点丢失事件。当切换选项卡或点击选项卡区域时,会触发不同的事件处理函数,显示相关消息。示例代码展示了如何在Application类中添加新选项卡并管理它们的事件。
摘要由CSDN通过智能技术生成

请参阅我对how to make instances of event for every single tab on multi tab GUI tkinter( notebook widget)的回答,以查看工作示例.

我使用MyTab类创建具有自己的事件绑定的新选项卡-因此,我可以创建许多相同的选项卡,并且每个选项卡都使用自己的事件绑定.在示例中,当您更改选项卡时,选项卡显示不同的消息.

您没有在问题中附加代码,因此我无法添加更详细的答案.

编辑:

从以前的链接绑定到框架的示例:

>直接在MyTab中:self.bind(“< Button-1>”,self.clickFrame)(在MyTab中为鼠标左键调用功能

>在Application中:tab.bind(“< Button-3>”,self.clickTab)(Application中的鼠标右键调用功能)

码:

#!/usr/bin/env python

from Tkinter import *

import tkMessageBox

import ttk

#---------------------------------------------------------------------

class MyTab(Frame):

def __init__(self, root, name):

Frame.__init__(self, root)

self.root = root

self.name = name

self.entry = Entry(self)

self.entry.pack(side=TOP)

self.entry.bind('', self.alert)

self.entry.bind('', self.printing)

self.bind("", self.clickFrame)

#-------------------------------

def alert(self, event):

print 'FocusOut event is working for ' + self.name + ' value: ' + self.entry.get()

#tkMessageBox.showinfo('alert', 'FocusOut event is working for ' + self.name + ' value: ' + self.entry.get())

#-------------------------------

def printing(self, event):

print event.keysym + ' for ' + self.name

#-------------------------------

def clickFrame(self, event):

print "MyTab: click at (" + str(event.x) + ", " + str(event.y) + ') for ' + self.name + " (parent name: " + self.root.tab(CURRENT)['text'] + ")"

#---------------------------------------------------------------------

class Application():

def __init__(self):

self.tabs = {'ky':1}

self.root = Tk()

self.root.minsize(300, 300)

self.root.geometry("1000x700")

self.notebook = ttk.Notebook(self.root, width=1000, height=650)

# self.all_tabs = []

self.addTab('tab1')

self.button = Button(self.root, text='generate', command=self.start_generating).pack(side=BOTTOM)

self.notebook.pack(side=TOP)

#-------------------------------

def addTab(self, name):

tab = MyTab(self.notebook, name)

tab.bind("", self.clickTab)

self.notebook.add(tab, text="X-"+name)

# self.all_tabs.append(tab)

#-------------------------------

def clickTab(self, event):

print "Application: click at (" + str(event.x) + ", " + str(event.y) + ') for ' + event.widget.name

#-------------------------------

def start_generating(self):

if self.tabs['ky'] < 4:

self.tabs['ky'] += 1

self.addTab('tab'+ str(self.tabs['ky']))

#-------------------------------

def run(self):

self.root.mainloop()

#----------------------------------------------------------------------

Application().run()

Python的PyQt库中,可以使用QTabWidget组件实现选项卡功能。在这个例子中,使用了QMainWindow作为主窗口,并在主窗口中创建了一个QTabWidget组件。在这个QTabWidget组件中,通过创建QTabWidget的子窗口QWidget,来实现不同选项卡界面。每个子窗口代表一个选项卡,可以在其中添加不同控件和布局来构建界面。 例如,在这个例子中,创建了三个选项卡控件窗口tab1、tab2和tab3,并将它们添加到QTabWidget中。然后,将QTabWidget设置为主窗口的中心控件,这样选项卡就会显示在主窗口中央的位置上。最后,设置了窗口的标题、图标和大小,并显示出来。 在PyQt中,还提供了丰富的控件和布局,可以根据需要在每个选项卡界面中添加不同的功能和操作。例如,可以使用QPushButton、QLabel、QTextEdit、QComboBox等控件来实现按钮、标签、可编辑框和下拉列表等功能。同时,还可以使用各种布局,如水平布局QHBoxLayout、垂直布局QVBoxLayout、网格布局QGridLayout等,来控制控件的位置和排列方式。 通过点击选项卡标签,可以在不同选项卡界面之间进行切换。这样,就可以实现在单个窗口中展示多个界面的效果。 总结起来,Python的PyQt库提供了丰富的控件和布局,可以使用QTabWidget组件来实现选项卡功能。通过创建不同的子窗口作为选项卡界面,并在每个界面中添加需要的控件和布局,可以实现在单个窗口中展示多个界面,并通过点击选项卡标签进行切换。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [[PyQt5] 选项卡](https://blog.csdn.net/guolindonggld/article/details/125705028)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [[PyQt5]高级控件4 - 选项卡QTabWidget](https://blog.csdn.net/yurensan/article/details/121182418)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [PyQt5实现单窗口多界面切换选项卡示例程序](https://download.csdn.net/download/baidu_36499789/86001356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值