如何在这个GUI中有效地实现这些代码?(我对编码有点陌生)只是问一个大概的想法或技巧



我原来的命令行接口代码中的代码如下:

```import numpy, random, time, sys
import requests
from random import randint
url = 'https://svnweb.freebsd.org/csrg/share/dict/words?view=co&content-type=text/plain'
r = requests.get(url)
text = r.text
# print(text)
individual_words = text.split()
# print(individual_words)
a = ""
print("====Welcome to the Username Generator!====")
userKey = input("Please input your desired base word or base letter to base your username off of: ")
print("Your base word is:", userKey,
", is this what you want to continue with?")
maxlength = len(userKey)
userConfirm = input("Y/n: ")
maxlength = len(userKey)
random_number = randint(0,len(individual_words))
if userConfirm == "Y" or "y":
nameOrder = []
nameOrder.append(userKey)
nameOrder.append(str(random_number))
nameOrder.append((individual_words)[random_number])
random.shuffle(nameOrder)
print("".join(nameOrder))
else:
print("invalid")
sys.exit()

我想要的结果是以某种方式插入它以在我的GUI界面中执行,但现在我只是专注于能够让它打印或重复GUI界面上的"输入"功能编写的用户输入。我已经尝试过实现这一点,但没有成功,建议、评论或小提示都会对我有很大帮助!GUI代码包括以下内容(我试图在这个版本中实现我的代码(

``` import tkinter as tk
import numpy, random, time, sys
import requests
from random import randint
H = 400
W = 800
def test_function(entry):
print("This is the entry:", entry)
a = ""
def format_response(name):
try:
name = weather['name']
desc = weather['weather'][0]['description']
temp = weather['main']['temp']
final_str = 'nameOrder'
except:
final_str = 'There was an issue creating your username'
return final_str
def get_username(entry):
url = 'https://svnweb.freebsd.org/csrg/share/dict/words?view=co&content-type=text/plain'
r = requests.get(url)
text = r.text
individual_words = text.split()
print("====Welcome to the Username Generator!====")
userKey = input("Please input your desired base word or base letter to base your username off of: ")
print("Your base word is:", userKey,
", is this what you want to continue with?")
maxlength = len(userKey)
userConfirm = input("Y/n: ")
maxlength = len(userKey)
random_number = randint(0,len(individual_words))
if userConfirm == "Y" or "y":
nameOrder = []
nameOrder.append(userKey)
nameOrder.append(str(random_number))
nameOrder.append((individual_words)[random_number])
random.shuffle(nameOrder)
print("".join(nameOrder))
else:
print("invalid")
sys.exit()

root=tk.Tk()
#INFO KEY: the .pack at the bottom has brackets, in between () type whatever side you want it to be
canvas = tk.Canvas(root, height=H, width=W)
canvas.pack()
frame = tk.Frame(root, bg ='#dfbf9f', bd=5) #the frame is basically where to frame the bg color
frame.place(relx = 0.5, rely = 0.1, relwidth=0.75, relheight=0.1, anchor='n') #rel means relative, so relative width, etc
label = tk.Label(frame, text = "label testing", bg = '#004d00')
label.place()
entry = tk.Entry(frame, bg = 'gray',font=40)
entry.place(relwidth=0.65, relheight =1)
button = tk.Button(frame, text="Submit", bg ='green', font= 40, command=lambda: get_username(entry.get()))
button.place(relx=0.7, relheight=1, relwidth=0.3)
lower_frame= tk.Frame(root, bg='#dfbf9f', bd=9)
lower_frame.place(relx=0.5, rely=0.25, relwidth=0.75, relheight = 0.6, anchor='n')

root.mainloop()```

所以我也是编程新手,我相信有经验的人会找到一个更漂亮的解决方案,但我认为我找到了解决你的问题的方法(或多或少(

import tkinter as tk
import numpy, random, time, sys
import requests
from random import randint
H = 400
W = 800
class RandomUsername():
def __init__(self, entry):
self.name = ""
self.entry = entry
def create_username(self):
self.name = get_username(self.entry)


def get_username(entry):
url = 'https://svnweb.freebsd.org/csrg/share/dict/words?view=co&content- 
type=text/plain'
r = requests.get(url)
text = r.text
individual_words = text.split()
userKey = entry
maxlength = len(userKey)
maxlength = len(userKey)
random_number = randint(0,len(individual_words))
nameOrder = []
nameOrder.append(userKey)
nameOrder.append(str(random_number))
nameOrder.append((individual_words)[random_number])
random.shuffle(nameOrder)
final_name = "".join(nameOrder)
return final_name
def callback(output_label):
new_entry = entry.get()
new_name = RandomUsername(new_entry)
new_name.create_username()
name_to_display = new_name.name
output_label.config(text=name_to_display)

root=tk.Tk()
canvas = tk.Canvas(root, height=H, width=W)
canvas.pack()
frame = tk.Frame(root, bg ='#dfbf9f', bd=5) 
frame.place(relx = 0.5, rely = 0.1, relwidth=0.75, relheight=0.1, anchor='n')
label = tk.Label(frame, text = "label testing", bg = '#004d00')
label.place()
entry = tk.Entry(frame, bg = 'gray',font=40)
entry.place(relwidth=0.65, relheight =1)
lower_frame= tk.Frame(root, bg='#dfbf9f', bd=9)
lower_frame.place(relx=0.5, rely=0.25, relwidth=0.75, relheight = 0.6, anchor='n')
name_to_display = ""
output_label = tk.Label(lower_frame, text=name_to_display, bg="#dfbf9f")
output_label.place(x=10, y=20)
button = tk.Button(frame, text="Submit", bg ='green', font= 40, command=lambda: 
callback(output_label))
button.place(relx=0.7, relheight=1, relwidth=0.3)

root.mainloop()

说明:首先,我删除了所有的print语句,因为当使用gui时,它们不再是真正需要的,但这是个人偏好。Tkinter Buttoncallbacks实际上不允许返回,所以为了仍然从函数中获得值,u可以创建一个类,然后将get_username函数的输出保存到objcet。最后,通过".config"方法可以更新标签的内容。希望这能有所帮助,如果一个更有经验的程序员能提供更好的解决方案,我非常感兴趣。

我对你想做的事情有点困惑,你能澄清一下吗?

你粘贴的第一段代码看起来像是来自python脚本?但你是说它在你的命令行界面上?

当你说你试图让它在GUI界面中执行时,你的确切意思是什么?

您是否试图找到一种使用GUI执行代码的方法?

相关内容

最新更新