Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 缺少在macOS Big Sur上打开GUI程序的参数/问题_Python 3.x_Macos_User Interface_Tkinter - Fatal编程技术网

Python 3.x 缺少在macOS Big Sur上打开GUI程序的参数/问题

Python 3.x 缺少在macOS Big Sur上打开GUI程序的参数/问题,python-3.x,macos,user-interface,tkinter,Python 3.x,Macos,User Interface,Tkinter,这是我的第一个GUI程序,我遇到了一些主要问题。我真的需要一些帮助。首先,我无法在我的电脑(mac)上打开程序。在空闲IDE中运行时,我收到以下错误消息:import Tkinter ModuleNotFoundError:没有名为“Tkinter”的模块 我已经安装了3.9,我认为它有一个GUI界面 在VS代码中调试时,我在第44行收到以下错误消息: 发生异常:TypeError init()至少接受4个参数(给定3个) 我想我有4个 我不知道从哪里开始这些问题。根据我的研究,在更新高于11.

这是我的第一个GUI程序,我遇到了一些主要问题。我真的需要一些帮助。首先,我无法在我的电脑(mac)上打开程序。在空闲IDE中运行时,我收到以下错误消息:import Tkinter ModuleNotFoundError:没有名为“Tkinter”的模块

我已经安装了3.9,我认为它有一个GUI界面

在VS代码中调试时,我在第44行收到以下错误消息: 发生异常:TypeError init()至少接受4个参数(给定3个)

我想我有4个

我不知道从哪里开始这些问题。根据我的研究,在更新高于11.1的Mac电脑上运行GUI程序似乎存在问题

代码如下

# Create a Tkinter GUI program that converts Celsius Temp to Fahrenheit
# F == Fahrenheit
# C == Celsius
# Tkinter imported
import Tkinter

# Global variable used
temp_val = 'Celsius'

#Set value for drop down menu 
def store_temp (set_temp):
    global temp_val
    temp_Val = set_temp

class TemperatureConverter:
    def __init__(self):
    
    # create main window
      self.main_window = Tkinter.Tk()

    # create a title for window
      self.main_window.title('Temperature Converter')

    # create three frames
      self.top_frame = Tkinter.Frame()
      self.option_frame = Tkinter.Frame()
      self.mid_frame = Tkinter.Frame()
      self.bottom_frame = Tkinter.Frame()

    #create widget for top frame
      self.prompt_label = Tkinter.Label(self.top_frame, text= 'Enter a temperature in Celsius: ')

    #pack top frame
      self.prompt_label.pack(side='left') 

    # create  str variable obj to hold empty string variable
      self.inputNumber = Tkinter.StringVar()
      self.var = Tkinter.StringVar()   

    # create widget for option drop down menu  
      self.entry = Tkinter.Entry(self.option_frame, textvariable=self.inputNumber )
      self.dropDownList = ['Celsius','Fahrenheit']
      self.drop_down = Tkinter.OptionMenu(self.option_frame, value=self.var , values=self.dropDownList, command=store_temp)
      self.var.set(dropDownList[0])

    # option widgets packed
      self.entry.pack(side='right')
      self.dropDownList.pack(side='left')

    #create widget for middle frame   
      self.result_label = Tkinter.Label(self.mid_frame) 

    # create widgets for bottom frame
      self.call_convert = (call_convert , result_label, inputNumber)

      self.convert_button = Tkinter.Button(self.bottom_frame, text='Convert', command=self.call_convert)

      self.quit_button= Tkinter.Button(self.bottom_frame, text= 'Quit', command= self.main_window.destroy)

    #pack the buttons
      self.convert_button.pack(side='left')
      self.quit_button.pack(side='left')

    #pack the frames
      self.top_frame.pack()
      self.option_frame.pack()
      self.mid_frame.pack()
      self.bottom_frame.pack()

    #Enter the tkinter main loop
      Tkinter.mainloop()

    # convert method is callback fucntion for convert button
      def call_convert(self):
          if temp_Val == 'Celsius':

              f = float((float(temp)* 9/5)+32)
              self.result_label.config(text='The temperature in Fahrenhiet is:')

          if temp_Val == 'Fahrenheit':

              c = float((float(temp)-32) * 5 / 9)
              self.result_label.config(text='The temperature in Celsius is:')



if __name__ == '__main__':
    temp_converter = TemperatureConverter()

你的代码中有很多错误。我想我把它们都修好了。我猜你想把结果贴在哪里。我还必须修复所有的凹痕。这是工作代码:

#创建一个tkinter GUI程序,将摄氏温度转换为华氏温度
#F==华氏温度
#C==摄氏度
#特金特进口
进口tkinter
类温度转换器:
定义初始化(自):
#创建主窗口
self.main_window=tkinter.Tk()
#为窗口创建标题
自身主窗口标题(“温度转换器”)
#创建三个框架
self.top\u frame=tkinter.frame(self.main\u窗口)
self.option\u frame=tkinter.frame(self.main\u窗口)
self.mid_frame=tkinter.frame(self.main_窗口)
self.bottom\u frame=tkinter.frame(self.main\u窗口)
#为顶部框架创建小部件
self.prompt\u label=tkinter.label(self.top\u frame,text=“输入摄氏温度:”)
#包顶框
self.prompt\u标签包(side=“left”)
#创建str变量obj以保存空字符串变量
self.inputNumber=tkinter.StringVar(self.main\u窗口)
self.var=tkinter.StringVar()
#为选项下拉菜单创建小部件
self.entry=tkinter.entry(self.option\u frame,textvariable=self.inputNumber)
self.dropDownList=[“摄氏度”,“华氏度”]
self.drop\u down=tkinter.OptionMenu(self.option\u frame,self.var,*self.dropDownList)
self.var.set(self.dropDownList[0])
#选项小部件打包
自进式包装(side=“right”)
自落式包装(side=“left”)
#为中间框架创建小部件
self.result\u label=tkinter.label(self.mid\u框架)
#为底部框架创建小部件
self.convert\u button=tkinter.button(self.bottom\u框架,text=“convert”,command=self.call\u convert)
self.quit\u button=tkinter.button(self.bottom\u框架,text=“quit”,command=self.main\u window.destroy)
#把钮扣打包
自我转换按钮包(side=“left”)
自我退出按钮包(side=“left”)
#把镜框打包
self.top_frame.pack()
self.option_frame.pack()
self.mid_frame.pack()
self.bottom_frame.pack()
#最好调用`.mainloop()`
self.main_window.mainloop()
#convert方法是convert按钮的回调函数
def呼叫转换(自):
如果self.var.get()=“摄氏度”:
f=float((float(self.entry.get())*9/5)+32)
self.result_label.config(text=“华氏温度为:”+str(f))
如果self.var.get()=“华氏度”:
c=浮动((浮动(self.entry.get())-32)*5/9)
self.result_label.config(text=“摄氏温度为:”+str(c))
自我结果标签包装(侧面=“底部”)
如果名称=“\uuuuu main\uuuuuuuu”:
温度转换器=温度转换器()
看看我为
选项菜单所做的工作,看看我是如何修复您的
call\u convert
功能的。如果你有任何具体的问题,告诉我,我会尽力回答


顺便说一句,我不认为你得到的任何错误都被你的操作系统所使用。另外,我建议下次使用
import tkinter as tk
,因为这将使编写代码更加容易。

如果是Python 3.x,
tkinter
应该是
tkinter
。代码中有很多错误,我建议您先学习基本的tkinter教程。非常感谢您的帮助。我看到了在选项菜单中使用*时所产生的差异,我还看到了对call_convert函数所做的更改。只是为了让我正确理解,在使用OptionMenu时,没有理由使用value=或values=。@始终保持\u cafinated\u如果这是您想要的答案,请接受它,这样其他人就不会浪费时间回答它。