gpt4 book ai didi

类结构内部的 Python::tkinter OptionMenu 方法不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 15:09:40 25 4
gpt4 key购买 nike

编辑::

我是使用 tkinter 的新手,并且在让 OptionMenu 方法在我的类结构中工作时遇到了问题。如果我在类之外使用选项菜单,它可以正常工作,但由于某种原因,它不喜欢我的类中包含的代码。我正在使用的简化代码如下所示:

from tkinter import *
from tkinter.tix import *

class myClass():

def __init__(self, master):
self.master = master
master.title('option menu test')

#create tool bar and set custom color
toolbarColor = '#%02x%02x%02x' % (117, 117, 119)
self.toolbar = Frame(master, bg=toolbarColor)

#add instructions button
self.addInstructionButton = Button(self.toolbar, text='Add Instruction', command=self.addNewFrame)
self.addInstructionButton.pack(side=LEFT, padx=4, pady=4)

#pack tool bar
self.toolbar.pack(side=TOP, fill=X)

#initialize new frames to add and counters
self.newInstructionCount = 0
self.newInstructionFrame = []
self.instructionCloseButton = []
self.instructionFrame = Frame(self.master,height=410,width=780)
self.instructionFrame.pack(side=TOP)

def addNewFrame(self):
#create new frame and append
self.newInstructionFrame.append(Frame(self.instructionFrame, width=785, height=100,bd=1,relief=SUNKEN)) #width and height are pixels
tempFrame = self.newInstructionFrame
self.instructionFrame.pack_propagate(False)
self.instructionFrame.grid_propagate(False)
self.newInstructionFrame[self.newInstructionCount].pack(side=TOP,fill=X)
#add drop down menu for modifications
self.modChoices = ['option 0',
'option 1',
'option 2',
'option 3',
'option 4',
'option 5']
self.modStringVar = StringVar()

##### OPTION MENU ERROR HERE #####
self.modPopupMenu = OptionMenu(tempFrame,StringVar(),self.modStringVar,self.modChoices[0],*self.modChoices)

self.modLabel = Label(self.newInstructionFrame[self.newInstructionCount], text='Option Label')
self.modLabel.pack(side=LEFT)
self.modPopupMenu.pack(side=LEFT)
self.newInstructionCount = self.newInstructionCount+1

## MAIN ##
root = Tk()
runGUI = myClass(root)
root.mainloop()

文件“C:/Users/me/Desktop/myFolder/myProject/GUI_code.py”,第 192 行,addNewFrame

self.modPopupMenu = OptionMenu(tempFrame,StringVar(),self.modStringVar,self.modChoices[0],*self.modChoices)

类型错误:init() 接受 2 到 3 个位置参数,但给出了 11 个

任何有关此错误的帮助或见解将不胜感激!感谢您的宝贵时间!

山姆

最佳答案

您确实覆盖了 OptionMenu。通过使用邪恶的通配符导入,您可以使用 tix 中的 OptionMenu 覆盖 tkinter 中的 OptionMenu。但您仍在使用 tkinter OptionMenu 中的语法。使用正确的导入:

import tkinter as tk
from tkinter import tix

那么如果你想使用 tkinter 版本:

self.modPopupMenu = tk.OptionMenu(tempFrame,StringVar(),self.modStringVar,self.modChoices[0],*self.modChoices)

顺便说一句,tix 已被弃用,python 建议您使用 ttk 代替。

关于类结构内部的 Python::tkinter OptionMenu 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44332051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com