tkinter桌面應用輸入城市查詢天氣

2021-10-14 03:22:59 字數 4496 閱讀 1680

頭段時間有機會了解到了webservice介面,引發思考。在呼叫webservice來呼叫windows,豈不是就寫了乙個簡單的桌面應用。

因此,用tkinter來控制彈窗,用webservice實現業務功能,最後用pyinstaller打包成可執行的exe檔案,應當可以直接執行。

嘗試成功,如下:

# coding=utf-8

from tkinter import

*import hashlib

import time

from suds.client import client

from suds.xsd.doctor import importdoctor, import

log_line_num =

0class

my_gui()

:def

__init__

(self, init_window_name)

: self.init_window_name = init_window_name

# 設定視窗

defset_init_window

(self)

: self.init_window_name.title(

"查詢城市天氣_v0.1"

)# 視窗名

# self.init_window_name.geometry('320x160+10+10') #290 160為視窗大小,+10 +10 定義視窗彈出時的預設展示位置

self.init_window_name.geometry(

'1280x760+100+100'

) self.init_window_name[

"bg"]=

"pink"

#視窗背景色

# self.init_window_name.attributes("-alpha",0.9) #虛化,值越小虛化程度越高

# 標籤

self.init_data_label = label(self.init_window_name, text=

"城市名稱"

) self.init_data_label.grid(row=

0, column=0)

self.result_data_label = label(self.init_window_name, text=

"天氣結果"

) self.result_data_label.grid(row=

0, column=12)

self.log_label = label(self.init_window_name, text=

"日誌"

) self.log_label.grid(row=

12, column=0)

# 文字框

self.init_data_text = text(self.init_window_name, width=

67, height=35)

# 原始資料錄入框

self.init_data_text.grid(row=

1, column=

0, rowspan=

10, columnspan=10)

self.result_data_text = text(self.init_window_name, width=

70, height=49)

# 處理結果展示

self.result_data_text.grid(row=

1, column=

12, rowspan=

15, columnspan=10)

self.log_data_text = text(self.init_window_name, width=

66, height=9)

# 日誌框

self.log_data_text.grid(row=

13, column=

0, columnspan=10)

# 按鈕

self.str_trans_to_md5_button = button(self.init_window_name, text=

"查詢天氣"

, bg=

"lightblue"

, width=10,

command=self.get_city_weather)

# 呼叫內部方法 加()為直接呼叫

self.str_trans_to_md5_button.grid(row=

1, column=11)

# 功能函式

defget_city_weather

(self)

: city_name =

str(self.init_data_text.get(

1.0, end)

).replace(

'\n',''

)if city_name:

try:

url =

''imp = import(

'', location=

'.xsd'

) imp.

filter

.add(

'') c = client(url, doctor=importdoctor(imp)

) message =

str(c.service.getweatherbycityname(city_name)

) message = message.split(

"string =")[

-1] self.result_data_text.delete(

1.0, end)

self.result_data_text.insert(

1.0, message)

self.write_log_to_text(

"info: 查詢成功"

)except

: self.result_data_text.delete(

1.0, end)

self.result_data_text.insert(

1.0,

"info: 查詢失敗"

)else

: self.write_log_to_text(

"error:位址無效"

)# 獲取當前時間

defget_current_time

(self)

: current_time = time.strftime(

'%y-%m-%d %h:%m:%s'

, time.localtime(time.time())

)return current_time

# 日誌動態列印

defwrite_log_to_text

(self, logmsg)

:global log_line_num

current_time = self.get_current_time(

) logmsg_in =

str(current_time)

+" "

+str

(logmsg)

+"\n"

# 換行

if log_line_num <=7:

self.log_data_text.insert(end, logmsg_in)

log_line_num = log_line_num +

1else

: self.log_data_text.delete(

1.0,

2.0)

self.log_data_text.insert(end, logmsg_in)

defgui_start()

: init_window = tk(

)# 例項化出乙個父視窗

zmj_portal = my_gui(init_window)

# 設定根視窗預設屬性

zmj_portal.set_init_window(

) init_window.mainloop(

)# 父視窗進入事件迴圈,可以理解為保持視窗執行,否則介面不展示

if __name__ ==

"__main__"

: gui_start(

)

當然,桌面應用沒那麼簡單,按這簡單實現,會有很多缺陷異常情況未做處理,例如超時無反應,請求失敗的情況。

tkinter基礎 輸入框 文字框

了解輸入框 文字框的使用方法 利用1製作簡易介面 首先明確上面由幾個元素組成 該介面由介面標題,輸入框 兩個按鈕 文字框組成。該介面我們需要實現的功能 實現 1 import tkinter as tk2 3 windows tk.tk 4 windows.title 輸入框 文字框 5 windo...

Web桌面應用框架2 著名的WEB桌面應用分析

前一篇文章裡,分析了包括nw.js和electron這種純js框架在內的幾種web桌面應用開發方式,實際上還有一種最古老的方式,那就是嵌入webview的方式。嵌入webview的方式和整個程式都是web視窗不同,僅在視窗的部分子視窗使用webview,和原生ui或directui結合的方式。這種在...

桌面應用程式

桌面應用程式 在台式電腦上執行的應用程式稱為桌面應用程式。比如 記事本,word,excel。這種應用程式的特點是 1 缺少共享 2 直接雙擊就可以執行,不需要ie 3 一般以window的視窗形式存在 web應用程式 1 需要ie來執行 2 一般以網頁的形式的存在 3 可以有很多的客戶端來共享。比...