【问题标题】:Cannot get desired interface using Tkinter [closed]无法使用 Tkinter 获得所需的界面 [关闭]
【发布时间】:2014-05-26 07:53:55
【问题描述】:

我一直在做一个小项目,其中一个计算器必须嵌入一个盒子中。我正在使用 Tkinter

我的代码:

import tkinter

top = tkinter.Tk()

def add(x, y):
  return x + y

def subtract(x, y):
  return x - y

def multiply(x, y):
  return x * y

def divide(x, y):
  return x / y

print("Select operation.")
print("1.Add")
print("2.Subtract")
print("3.Multiply")
print("4.Divide")

choice = input("Enter choice(1/2/3/4):")
num1 = int(input("Enter first number: "))
num2 = int(input("Enter second number: "))

if choice == '1':
  print(num1,"+",num2,"=", add(num1,num2))
elif choice == '2':
  print(num1,"-",num2,"=", subtract(num1,num2))
elif choice == '3':
  print(num1,"*",num2,"=", multiply(num1,num2))
elif choice == '4':
  print(num1,"/",num2,"=", divide(num1,num2))
else:
  print("Invalid input")

top.mainloop()

问题是计算器没有在盒子里面打开。我得到以下输出:

Select operation.
1.Add
2.Subtract
3.Multiply
4.Divide
Enter choice(1/2/3/4): 3
Enter first number: 15
Enter second number: 14
15 * 14 = 210

我需要的是把它显示在盒子里。

【问题讨论】:

  • print 不会神奇地打印到 tkinter 窗口。您实际上必须为输入/输出创建一些小部件。
  • 我没有得到你..widgets ??..你能解释更多..或者给我一些例子..它会很棒
  • 你的意思是..我想创建一个输入框并从输入框检索数据?

标签: python tkinter


【解决方案1】:

你还没有创建一个“盒子”,所以在你创建之前展示一个盒子里面的东西会很困难。

行:

top = tkinter.Tk()

Tkinter GUI 创建根窗口。要在其中打印内容,您需要添加一个可以在根窗口中写入的小部件(GUI 元素)。一个不错的选择是Text 小部件:

import Tkinter as tk

root = tk.Tk()
my_text = tk.Text(root)
my_text.pack()

现在要打印到文本框而不是终端,您可以用Text.insert 方法替换您的打印语句。

my_text.insert(tk.END,"Hello, this is some text\n")
my_text.insert(tk.END,"This is some other text\n")
my_text.insert("0.0","This is some text starting at row 0 and column 0\n")
my_text.insert(tk.CURRENT,"This is even more text, this time starting from the current cursor position\n")

【讨论】:

  • 我可以这样写 my_text.insert(tk.END,(num1,"-",num2,"=",subtract(num1,num2)) 吗?
  • 你必须先把它变成一个字符串,所以:my_text.insert(tk.END,"".join((num1,"-",num2,"=", subtract(num1,num2)))my_text.insert(tk.END,"%d-%d=%d"%(num1,num2,subtract(num1,num2))) 可以工作。
  • 但是当我添加choice = my_text.insert(tk.END,input("Enter choice(1/2/3/4):")) ..它不起作用兄弟
  • SO 上的长评论线程不受欢迎。新问题应该使用“”按钮而不是在 cmets 中发布。
  • 你知道为什么会这样吗..如果是请分享
猜你喜欢
  • 2015-04-06
  • 2021-05-12
  • 2020-11-22
  • 1970-01-01
  • 2018-12-11
  • 1970-01-01
  • 1970-01-01
  • 2014-01-17
  • 1970-01-01
相关资源
最近更新 更多