在python中打开一个主窗口

时间:2015-05-27 10:57:05

标签: python python-3.x tkinter tk

我有以下代码。它应该打开某种窗口,但当我运行它或按回车或其他任何东西时都没有任何反应。我做错了什么或忘记了什么?

import sys
import tkinter
def main():
root= tkinter.Tk()
root.title('Reminder')
root.resizable(width=False, height=False)
  tkinter.mainloop()
  if __name__ == '_ _main_ _': 
   main()
 tkinter.mainloop()

4 个答案:

答案 0 :(得分:1)

您必须遇到许多语法错误,像这样更改语法

from tkinter import *

class Main:
    def __init__ (self,root):
        self.root = root
        self.root.title("Reminder")
        self.root.geometry("222x222")


if __name__ == '__main__':
    root = Tk()
    obj = Main(root)
    root.mainloop()

答案 1 :(得分:0)

您调用了tkinter.mainloop()。你应该做的是root.mainloop()。

import sys                  #imports
import tkinter
def main():
    root= tkinter.Tk()      #Setup root
    root.title('Reminder')
    root.resizable(width=False, height=False)
    root.mainloop()         #Culprit
if __name__ == '_ _main_ _': 
    main()

root.mainloop()             #Culprit

此外,通常你只需要一个主循环,而不是两个,因为mainloop会运行,直到你杀死窗口。

希望有所帮助! (:

答案 2 :(得分:0)

尝试将实际小部件添加到根目录。

from tkinter import Tk, Frame, BOTH

class Example(Frame):

    def __init__(self, parent):
        Frame.__init__(self, parent, background="white")   

        self.parent = parent        
        self.parent.title('Reminder')
        self.pack(fill=BOTH, expand=1)

def main():

    root = Tk()
    root.geometry("250x150+300+300")
    root.resizable(width=False, height=False)
    app = Example(root)
    root.mainloop()  

if __name__ == '__main__':
    main()

如果您使用

if __name__ == '_ _main_ _': 
    main()

您的main永远不会运行。它应该是__main__。您可以在交互式会话中说服自己。

stacey@stacey-Inspiron-N4020:~$ python3
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> __name__
'__main__'
>>> __name__ == '__main__'
True
>>> __name__ == '_ _main_ _'
False
>>> 

答案 3 :(得分:-1)

我在代码中看到的第一个问题是至少对于python2.7的import语句,它应该是:

导入Tkinter

无论如何,该代码似乎不起作用,所以我认为你可以使用一些显示窗口的例子:

#!/usr/bin/env python
import Tkinter as tk

class Application(tk.Frame):
    def __init__(self, master=None):
        tk.Frame.__init__(self, master)
        self.grid()
        self.createWidgets()

    def createWidgets(self):
        self.quitButton = tk.Button(self, text='Quit',
            command=self.quit)
        self.quitButton.grid()

app = Application()
app.master.title('Sample application')
app.mainloop()

无论如何,你有空格:

if __name__ == '_ _main_ _': 

它应该是

if __name__ == '__main__':